Prisma-具有两个唯一字段的类型上的选择器

问题描述

我正在尝试实现解析器,该解析器将检查具有给定登录名的用户是否存在于数据库中。但是我在prisma中的where选择器上遇到了困难。

所以我的类型是用户

type User {
  UserID: ID! @id
  Login: String! @unique
  Password: String!
  Phone: String!
  Mail: String!
  Comments: [Comment!]
    @relation(
      name: "AllCommentsOfUser"
      fields: [UserID]
      references: [CommentID]
    )
  Likes: [Like!]
    @relation(name: "AllLikesOfUser",fields: [UserID],references: [LikeID])
  createdAt: DateTime! @createdAt
}

这是prisma生成查询


user(where: UserWhereUniqueInput!): User

input UserWhereUniqueInput {
  UserID: ID
  Login: String
}

登录功能中,我正在尝试检查具有给定登录名的用户是否存在于我的数据库中:

  async login(parent,{ email,password,username },ctx,info) {
      const user = await ctx.prisma.user({ username }); // Option 1 
      const user = await ctx.prisma.user({ Login: username }); // Option 2 

      if (!user) {
        throw new Error(`No such user found for email: ${username}`);
      }

      const valid = await bcrypt.compare(password,user.password);
      if (!valid) {
        throw new Error("Invalid password");
      }

      return {
        token: jwt.sign({ userId: user.id },process.env.JWT_SECRET),user,};
    },},

每次我都出现以下错误消息:

您为User上的where选择器提供了无效的参数。请提供一个唯一的字段和值。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)