【问题标题】:GraphQL Query Format IssueGraphQL 查询格式问题
【发布时间】:2019-02-06 23:14:02
【问题描述】:

我是 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?

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

【问题讨论】:

  • 您所指定的只是您“无法通过”,因此从这个问题中不清楚实际出了什么问题。在编写这些类型的问题时,包括您看到的错误(如果有)会很有帮助。如果您没有看到预期的行为,描述该行为以及您看到的实际行为会很有帮助。

标签: express graphql


【解决方案1】:

mutation 关键字后面是操作的名称,它是任意的,甚至可以完全省略。您仍然需要实际确定要查询的 Mutation 类型上的哪个或哪些字段。在这种情况下,我们想要的字段是createUser,所以我们需要这样做:

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

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

【讨论】:

    【解决方案2】:

    会不会是这样的:

    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);
          });
      });
    }
    

    【讨论】:

      【解决方案3】:

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

      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}
      },
      

      【讨论】:

        猜你喜欢
        • 2020-07-25
        • 2020-05-20
        • 2018-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-21
        • 2020-11-13
        • 2020-09-28
        相关资源
        最近更新 更多