GraphQL根查询:相同的模式,不同的类型

时间:2016-08-03 20:39:16

标签: graphql graphql-js

我是GraphQL的新手,在我的根查询中,除了他们的"类型"我有两个非常相似的字段。财产,我想结合。

allPosts返回一个帖子对象数组,而post则返回一个帖子。

每个字段使用相同的模式,并根据传入的参数在相应的字段中确定加载器/资源。

const RootQuery = new graphql.GraphQLObjectType({
    name: 'Query',
    description: 'Root Query',
    fields: {
      allPosts: {
          type: new graphql.GraphQLList(postType),
          args: {
              categoryName: {
                  type: graphql.GraphQLString
              }
          },
          resolve: (root, args) => resolver(args)
      },
      post: {
          type: postType,
          args: {
              slug: {
                  type: graphql.GraphQLString
              }
          },
          resolve: (root, args) => resolver(args)
      },
});

是否可以将这两个字段合并为一个并且具有由传入的参数或另一个变量确定的类型?

1 个答案:

答案 0 :(得分:2)

不,你不能!

将字段定义为GraphQLList后,您始终会获得一个数组。您不可能突然获得object而不是array of。 当您将字段定义为GraphQLObjectType(或任何其他标量类型)并且您希望获得数组作为结果时,同样适用于其他情况。

这两个领域的目的各不相同。

无论如何,您始终可以向allPosts字段添加限制逻辑,并将结果限制为一个。但是,尽管如此,你总是只有一个帖子