【发布时间】:2019-08-28 02:52:33
【问题描述】:
我在突变内部查询时遇到了一点麻烦,我相信我可能没有正确调用查询,因为它执行但没有等待响应,所以我得到一个未定义的值,请纠正我。
请注意,我使用的是棱镜绑定
这是我的变异解析器:
const Mutation = {
async signUp(parent, args, ctx, info) {
const password = await bcrypt.hash(args.password, 10)
const user = await ctx.db.mutation.createUser({ data: {...args, password} })
const token = jwt.sign({ userId: user.id }, process.env.PRISMA_SECRET)
return {
token,
user,
}
},
async login(parent, args, ctx, info) {
const user = await ctx.db.query.users( {where:{email: args.email}}, info)
if (!user) {
throw new Error('No such user found')
}
const valid = bcrypt.compare(args.password, user.password)
if (!valid) {
throw new Error('Invalid password')
}
const token = jwt.sign({ userId: user.id }, process.env.PRISMA_SECRET)
return {
token,
user,
}
},
};
module.exports = Mutation;
在登录功能中查询 一个或多个用户时,即使知道我有电子邮件作为唯一字段,我也会尝试这两个查询它总是打印 No such user found due I receive undefined, IDK 如果是因为 prisma-绑定或未正确执行对 prisma 的函数调用。
这是我的 schema.graphql
type Query {
// some queries
}
type Mutation {
signUp(
name: String!
email: String!
password: String!
): AuthPayLoad
login(
email: String!
password: String!
): AuthPayLoad
}
type AuthPayLoad {
token: String
user: User
}
所以对于 prisma-binding 我不必定义查询 users(),绑定会处理它吗?即使是这样,我也会有另一个错误,但事实并非如此。
也许我遗漏了一些小细节,如果有人指出我正确的方向,我将不胜感激。
提前谢谢...
【问题讨论】:
-
电子邮件是用户查询中“数据”的一部分吗?如果是这样,您需要
const user = await ctx.db.query.user( {where:{email: args.data.email}})
标签: javascript graphql prisma