GraphQL根查询:相同的架构,不同的类型

GraphQL根查询:相同的架构,不同的类型,graphql,graphql-js,Graphql,Graphql Js,我对GraphQL非常陌生,在我的根查询中,除了“type”属性之外,还有两个非常相似的字段,我想将它们组合起来 allPosts返回一个post对象数组,而post返回一个post 每个字段都使用相同的模式,并且根据传入的参数在相应字段中确定加载器/资源 const RootQuery = new graphql.GraphQLObjectType({ name: 'Query', description: 'Root Query', fields: { a

我对GraphQL非常陌生,在我的根查询中,除了“type”属性之外,还有两个非常相似的字段,我想将它们组合起来

allPosts
返回一个post对象数组,而
post
返回一个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)
      },
});
是否可以将这两个字段合并为一个字段,并由传入的参数或其他变量确定类型?

不,您不能

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

这两个领域有着完全不同的目的

无论如何,您始终可以向
allPosts
字段添加限制逻辑,并将结果限制为一个。但是,尽管如此,你总是只能得到一篇文章的数组不,你不能

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

这两个领域有着完全不同的目的

无论如何,您始终可以向
allPosts
字段添加限制逻辑,并将结果限制为一个。但是,尽管如此,您总是只得到一个post的数组

您所说的“每个字段使用相同的模式”是什么意思?当这两个字段有不同的用途时,为什么要合并它们?您所说的“每个字段使用相同的模式”是什么意思?当这两个字段有不同的用途时,为什么要合并它们?