1

最近我开始做一个新项目来学习一些新技术(Prisma 2、REST api with Express 等)。寿,我遇到了一个问题。

我的应用程序有一个用户身份验证系统,用户模型有一个密码列。因此,当客户端请求用户时,后端会从数据库中选择所有列,包括密码(顺便说一下散列)。

我试图不选择 prisma findMany 上的密码列,如下所示:

await prisma.user.findUnique({
  where: {
    ...
  },
  select: {
    password: false
  }
});

但是我得到了一个错误,棱镜说选择应该包含至少一个真正的价值。因此,我添加id: true到选择中。我提出了一个 api 请求,我看到只有 id 为用户返回。

据我了解,prisma 希望我将我关心的所有列添加到选择对象中。但是,我需要来自用户的很多列,并且我正在做很多查询来获取用户,我不能每次都写我需要的所有字段。

所以,我想问你是否有合法的方法来做到这一点。

PS:我不采取“改用 rawQuery”作为解决方案。

4

1 回答 1

3

唯一合法的方法是添加column: true到您要包含的列中。这里有排除列的请求,所以如果您可以在与您相关的请求中添加一个,这样我们就可以查看优先级。

https://github.com/prisma/prisma/issues/5042 https://github.com/prisma/prisma/issues/7380 https://github.com/prisma/prisma/issues/3796

于 2021-06-28T05:11:01.430 回答