返回函数而不是对象时,字段args被拒绝

时间:2016-12-15 11:29:24

标签: javascript graphql graphql-js

我想问一下 GraphQL 此代码将失败,并显示错误

  

错误:Mutation.addUser args必须是一个参数名称为键的对象。

这是代码

const Schema = new GraphQLObjectType({
  name: "Mutation",
  description: "Mutation schema",
  fields() {
    return {
      // Add user
      addUser: {
        type: UserSchema,
        args: {
          firstName: {
            type: GraphQLString
          },
          lastName: {
            type: GraphQLString
          }
        },
        resolve(_, args){
          return Db.models.user.update( () => {
            return _.mapValues(args, (v, k) => {
              return args[k];
            });
          }, {
            returning: true
          });
        }
      }

    };
  }
});

但是,这段代码完美无缺

args

为什么<input id="one"> <input id="two"> <button id="open">Open</button> <br /> <span id="urlStr"></span> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jque‌​ry.min.js"></script> 无法从函数返回对象?

1 个答案:

答案 0 :(得分:0)

fields本身可以是一个函数,因此在其中使用另一个函数来定义args是多余的。

将它们作为函数的目的是能够定义需要相互引用的类型,或者需要在字段中引用自己的类型。

因此只有fields作为一个函数才能解决问题。