使用 Prisma 2 从查询中排除用户密码
Posted
技术标签:
【中文标题】使用 Prisma 2 从查询中排除用户密码【英文标题】:Exclude user's password from query with Prisma 2 【发布时间】:2021-09-09 09:09:46 【问题描述】:最近我开始从事一个新项目以学习一些新技术(Prisma 2、带有 Express 的 REST api 等)。不过,我遇到了一个问题。
我的应用有一个用户认证系统,并且用户模型有一个密码列。因此,当客户端请求用户时,后端会从数据库中选择所有列,包括密码(顺便说一下哈希)。
我尝试不选择 prisma findMany 上的密码列,如下所示:
await prisma.user.findUnique(
where:
...
,
select:
password: false
);
但是我得到了一个错误,棱镜说选择应该包含至少一个真正的价值。因此,我在选择中添加了id: true
。我提出了一个 api 请求,我看到只有 id 为用户返回。
据我了解,prisma 希望我将我关心的所有列添加到选择对象中。但是,我需要来自用户的很多列,并且我正在做很多查询来获取用户,我不能每次都写下我需要的所有字段。
所以,我想问你是否有合法的方法来做到这一点。
PS:我不采取“改用 rawQuery”作为解决方案。
【问题讨论】:
【参考方案1】:唯一合法的方法是将column: true
添加到您要包含的列中。此处有排除列的请求,因此如果您可以在与您相关的请求中添加 ? 以便我们查看优先级,那就太好了。
https://github.com/prisma/prisma/issues/5042 https://github.com/prisma/prisma/issues/7380 https://github.com/prisma/prisma/issues/3796
【讨论】:
以上是关于使用 Prisma 2 从查询中排除用户密码的主要内容,如果未能解决你的问题,请参考以下文章