roo*_*eih 3 javascript node.js graphql
我已经测试 GraphQL 几天了,并且正在执行身份验证管理(按照本教程进行操作)。我目前因以下错误而被阻止:
Unknown arg `email` in where.email for type UserWhereUniqueInput. Did you mean `id`?
Run Code Online (Sandbox Code Playgroud)
当我提出以下请求时:
mutation {
login(email: "contact@floriankamps.fr", password: "Test123") {
token
user {
email
links {
url
description
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的登录解析器:
let login = async (parent, args, context, info) => {
const user = await context.prisma.user.findUnique({
where: {
email: args.email
}
});
if (!user)
throw new Error('No such user found');
const valid = await bcrypt.compare(args.password, user.password);
if (!valid)
throw new Error('Invalid password');
const token = jwt.sign({ userId: user.id }, APP_SECRET);
return {
token,
user
}
}
Run Code Online (Sandbox Code Playgroud)
我的 GraphQL 架构:
type Mutation {
post(url: String!, description: String!): Link!
updateLink(id: Int!, url: String, description: String): Link
deleteLink(id: Int!): Link
signup(email: String!, password: String!, name: String!): AuthPayload
login(email: String!, password: String!): AuthPayload
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道它会妨碍什么......
好吧,经过长时间的调查,我找到了解决方案。问题不是来自 GraphQL,而是来自 Prisma。要将电子邮件字段添加到用户模型中,我们需要将其定义为 @unique 指令,如下所示:
model User {
id Int @id @default(autoincrement())
name String
email String @unique
password String
links Link[]
}
Run Code Online (Sandbox Code Playgroud)
解决方案最初发布在这里: https: //github.com/howtographql/howtographql/issues/661#issuecomment-401372966
| 归档时间: |
|
| 查看次数: |
5670 次 |
| 最近记录: |