GraphQL对象属性应该是字符串列表

时间:2016-06-23 15:04:33

标签: javascript node.js graphql graphql-js

如何为GraphQL中的字符串数组创建对象属性的架构?我希望响应看起来像这样:

{
  name: "colors",
  keys: ["red", "blue"]
}

这是我的架构

var keysType = new graphql.GraphQLObjectType({
  name: 'keys',
  fields: function() {
    key: { type: graphql.GraphQLString }
  }
});

var ColorType = new graphql.GraphQLObjectType({
  name: 'colors',
  fields: function() {
    return {
      name: { type: graphql.GraphQLString },
      keys: { type: new graphql.GraphQLList(keysType)
    };
  }
});

当我运行此查询时,我收到错误而没有数据,错误只是[{}]

查询{colors {name,keys}}

但是,当我运行查询只返回名称时,我得到了成功的响应。

查询{colors {name}}

如何在查询密钥时创建一个返回字符串数组的模式?

1 个答案:

答案 0 :(得分:13)

我想出了答案。关键是将graphql.GraphQLString传递给graphql.GraphQLList()

架构变为:

var ColorType = new graphql.GraphQLObjectType({
  name: 'colors',
  fields: function() {
    return {
      name: { type: graphql.GraphQLString },
      keys: { type: new graphql.GraphQLList(graphql.GraphQLString)
    };
  }
});

使用此查询:

查询{colors {name,keys}}

我得到了预期的结果:

{
  name: "colors",
  keys: ["red", "blue"]
}