棱镜 findUnique 其中只需要一个唯一参数

问题描述

我遇到了一个问题,我需要通过他的用户名和电子邮件来检查用户是否存在,因为这两个字段都是数据库中的唯一字段,但出现错误Argument where of type UserWhereUniqueInput needs exactly one argument,but you provided username and email. Please choose one. 那么,有没有办法只执行一次这个查询?而不是像下面这样为每个运行一个

const user = await prisma.user.findUnique({
        where: {
          username,email,},});

而不是这样

const user = await prisma.user.findUnique({
        where: {
          username,});

const user = await prisma.user.findUnique({
        where: {
          email,});

解决方法

我不完全确定,但prisma 返回一个JS 对象... 所以也许这样的查询应该有效:

const query = await prisma.user.findUnique({
        where: {
          user: user.username
        },select: {
         user: true,email: true
      }
      });

我相信这应该有效,但它仍然只能找到一个独特的。我不确定为什么您会选择 user + email 作为两者都是唯一的,因为我认为无论如何都会与另一个相关联。

如果我的解决方案不起作用,我会在这里查看进一步的答案:https://www.prisma.io/docs/concepts/components/prisma-client/crud#findfirst