prisma findUnique 与 where 抛出错误

emm*_*man 2 javascript node.js express prisma

我正在尝试在 ExpressJS 和 Prisma 中创建 Singup API。

我正在检查给定的电子邮件是否存在于我的数据库中。当我传递电子邮件和密码时,它会抛出 Unknown arg email in where.email for type SignupWhereUniqueInput. Did you mean id? Available args:错误。

我尝试使用 select: { email: true, password: true } 但它不起作用。仅当我传递身份证号码而不是电子邮件时,代码才有效。任何想法这里有什么问题吗?

router.post(`/signup`, async (req, res) => {
  const { email, password } = req.body;

  const hashPassword = await bcrypt.hash(password, 10);

  const checkEmail = await prisma.signup.findUnique({
    where: {
      email: email
    }
  });

  if (checkEmail) {
    return res.status(400).json({
      error: "Pick different one"
    });
  }
  const userSignUp = await prisma.signup.create({
    data: {
      email,
      password: hashPassword
    }
  });

  return res.json(userSignUp);
});

// DB Schema
model Signup {
  id       Int    @id @default(autoincrement())
  email    String
  password String
}
Run Code Online (Sandbox Code Playgroud)

Tas*_*mam 8

您收到此错误的原因是emailPrismaSignup模型中的字段不是唯一的where查询中的选项仅findUnique接受模型的唯一字段。这样做是为了确保查询只能指定一条记录findUnique。如果您有兴趣了解更多信息,Prisma 客户端 API 参考会更深入地解释此行为。

要解决该错误,请使该email字段在 Prisma 架构文件中具有唯一性。更新后的Signup模型应如下所示:

model Signup {
  id       Int      @id @default(autoincrement())
  email    String   @unique      
  password String 
}
Run Code Online (Sandbox Code Playgroud)