在突变内部进行查询时,我遇到了一些麻烦,我相信也许我没有正确调用查询,因为它已执行但没有等待响应,所以我得到一个不确定的值,请更正我。 / p>
请注意,我使用的是棱柱装订
这是我的突变解析器:
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;
在登录功能中,当查询一个或多个用户时,即使我知道我将电子邮件作为唯一字段,我也尝试了两个查询,它始终打印找不到此类用户,因为我收到未定义的IDK(如果是因为Arizona-绑定或未正确执行对棱镜的函数调用。
这是我的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绑定,我不必定义查询users(),绑定将处理正确的权限?即使是那样,我也会遇到另一个错误,不是这种情况。
也许我缺少一些小细节,如果有人指出我正确的方向,将不胜感激。
预先感谢...
答案 0 :(得分:0)
您将错误的选择集传递给查询。您将以登录名突变形式返回AuthPayload,但会将其传递给肯定不兼容的用户查询。
尝试
{
...
"engines": {
"node": "~10.14.2",
"npm": "~6.7.0"
},
"dependencies": {
...
"foo": "file:foo.tgz"
"bar": "./bar.tgz" // I've also tried other variants
},
"private": true
}