我正在尝试实现解析器,它将检查具有给定登录名的用户是否存在于数据库中。但是我很难使用 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 选择器提供了无效参数。请仅提供一个唯一字段和值。