如何为字符串和数字列表定义GraphQLType?

时间:2017-12-13 07:43:09

标签: javascript graphql graphql-js

我在服务器上有一个如下所示的对象:

{ data: [[1,"asds"], [4, "ssd", [94, "Ads"]] }

如何在GraphQL中定义一个类型(使用graphql.js)来描述它?基本上像GraphQLList(GraphQLString | GraphQLInt)。

这可能吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

您可以尝试使用GraphQLScalarType接受任何值:

var AnyValueScalar = new graphql.GraphQLScalarType({
  name: 'AnyValueScalar',
  serialize: anyValue,
  parseValue: anyValue,
  parseLiteral(ast) {
      return anyValue(ast.value);
  }
});

function anyValue(value) {
  return value
}

定义查询类型字段数据

var queryType = new graphql.GraphQLObjectType({
  name: 'Query',
  fields: {
    data: {
      type: AnyValueScalar,
      resolve: function(_,args){
        return [[1,"asds"], [4, "ssd", [94, "Ads"]]]
      }
    }
  }
});

如果您在QraphiQL中查询如下

query {
  data
}

它应该有结果

{
  "data": {
    "data": [
      [
        1,
        "asds"
      ],
      [
        4,
        "ssd",
        [
          94,
          "Ads"
        ]
      ]
    ]
  }
}