GraphQL查询格式问题

时间:2019-02-06 11:49:03

标签: express graphql

对于GraphQL,JS和后端,我通常是新手。我正在尝试查询BE演示程序,但我无法通过它,我认为这是语法上的误会...

函数看起来像:

Mutation: {
  createUser: async (parent, { user }, context, info) => {
    const newUser = await new User({
      name: user.name,
      email: user.email,
      age: user.age
    });

    return new Promise((resolve, reject) => {
      newUser.save((err, res) => {
        err ? reject(err) : resolve(res);
      });
    });
  },

我的查询如下:

mutation createUser(user: $user) {
  name,
  _id
}

的var属性为:

{
  "user": {
    "id": 1,
    "name": "Jack"
  }
}

我的理解是,该突变想要获取一个用户对象,所以我通过$ user var发送用户查询?

感谢一些我在这里不了解的帮助!

3 个答案:

答案 0 :(得分:1)

关键字mutation之后是您的操作的名称,该名称是任意的,甚至可以完全省略。您仍然需要实际确定要查询的突变类型中的哪些字段。在这种情况下,我们想要的字段是createUser,因此我们需要执行以下操作:

mutation SomeName ($user: UserInput) { 
  createUser(user: $user) {
    name,
    _id
  }
}

请注意,我们还必须在第一行中定义变量。然后,我们可以在查询中的任何地方使用这些变量。还要注意,根据您的问题,我不知道$user的类型实际上是什么-您需要更改UserInput以匹配您的模式。

答案 1 :(得分:0)

会是这样吗?

Mutation: {
  createUser(user, context, info) => {
    const newUser = await new User({
      name: user.name,
      email: user.email
      age: user.age
    });

    return Promise.resolve()
      .then((data) => {
        newUser.save(data);
      })
      .catch((err) => {
        console.log(err);
      });
  });
}

答案 2 :(得分:0)

因为我不了解您的架构的详细信息,如果您将架构设为这样(需要电子邮件,需要年龄):

type User{
  _id:ID!
  name:String!
  email:String!
  age:Int!
}

然后,您应该在突变参数中传递电子邮件和年龄信息。

,似乎在使用猫鼬。然后,您可以这样编写代码:

Mutation: {
  createUser: async (parent, { user }, context, info) => {
    const newUser = await new User({
    name: user.name,
    email: user.email,
    age: user.age
  });

  const result = newUser.save()

  return {...result._doc, id:result.id}
},