gpt4 book ai didi

prisma - 我如何编写一个 Prisma findFirst where 子句,即 OR 的两个 AND,或者 Prisma 如何处理未定义的?

转载 作者:行者123 更新时间:2023-12-05 09:31:44 24 4
gpt4 key购买 nike

我正在使用 Prisma

我有一个要搜索的 postgres 表,只查找匹配 where (id 和 accessKey) 或 (id 和 ownerId) 的记录

如果 accessKey 或 ownerId 未定义,它会一直查找 where (id)

我发现,如果我使用不可能的字符串,则搜索有效

我在 prisma 文档中找不到合适的答案,所以我想在这里问一下

  return await db.attendee.findFirst({
where: {
OR: [
{ AND: { id, ownerId } },
{ AND: { id, accessKey } },
]
}
})

如果 accessKey 或 ownerId 未定义,它们就会从查询中有效消失,这是有道理的

我使用了它并且它起作用了——值是 guid 的,所以它们永远不会匹配,但是如果我的 secret 短语松动了(它在 repo 中,而不是在 env var 中)那么这将是一个类似于 sql 的漏洞利用-注入(inject)...

  const userId = context?.currentUser?.sub || `can't touch this`;
const accessKey = vaccessAuth?.accessKey || `can't touch this`;

什么可能更像是“棱镜方式”?

最佳答案

据我了解,我们可以这样表述您的问题(如果我错了请纠正我)。

找到第一个attendee where:
id 字段匹配 AND ( accessKey OR ownerId 字段匹配)

试试这个:

return await prisma.attendee.findFirst({
where: {
OR: [
{ ownerId: ownerIdValue },
{ accessKey: accessKeyValue }
],
AND: { id: idValue }
}
});

关于prisma - 我如何编写一个 Prisma findFirst where 子句,即 OR 的两个 AND,或者 Prisma 如何处理未定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68687783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com