Mutation await函数内部的查询解析器被省略

时间:2019-04-06 10:47:38

标签: javascript graphql prisma

在突变内部进行查询时,我遇到了一些麻烦,我相信也许我没有正确调用查询,因为它已执行但没有等待响应,所以我得到一个不确定的值,请更正我。 / 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(),绑定将处理正确的权限?即使是那样,我也会遇到另一个错误,不是这种情况。

也许我缺少一些小细节,如果有人指出我正确的方向,将不胜感激。

预先感谢...

1 个答案:

答案 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
}