【问题标题】:GraphQL Root Query: Same schema, different typesGraphQL 根查询:相同的模式,不同的类型
【发布时间】:2016-12-09 17:48:48
【问题描述】:

我对 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)
      },
});

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

【问题讨论】:

  • “每个字段都使用相同的架构”是什么意思?当这两个字段有不同的用途时,为什么要将它们组合起来?

标签: graphql graphql-js


【解决方案1】:

不,你不能!

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

这两个领域的用途确实不同。

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

【讨论】:

    猜你喜欢
    • 2017-03-26
    • 2018-11-14
    • 2021-03-16
    • 2019-05-25
    • 2018-12-18
    • 2018-02-19
    • 2019-11-22
    • 2020-01-17
    • 2021-03-28
    相关资源
    最近更新 更多