1

我正在尝试实现解析器,它将检查具有给定登录名的用户是否存在于数据库中。但是我很难使用 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,
      };
    },
  },

每次我都会收到以下错误消息:

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

4

0 回答 0