【问题标题】:How to group GraphQL query objects into namespaces?如何将 GraphQL 查询对象分组到命名空间中?
【发布时间】:2022-01-06 09:31:37
【问题描述】:

如何在 GraphQL 中将查询分组到命名空间?我现在有这样的事情:

const queryType = new g.GraphQLObjectType({
    name: "Query",
    fields: fields,
});

fields 中,我有字段-> 对象映射,它工作正常,但我想将这些映射分为两组(livehistorical)。但是,如果我将上面的代码修改为:

const queryType = new g.GraphQLObjectType({
    name: "Query",
    fields: {
        historical: {
            type: new g.GraphQLObjectType({
                name: "historical",
                fields: fields,
            })
        }
    },
});

一切都解析为null。我怎样才能为这个分组编写解析器?有可能吗?

【问题讨论】:

  • 您是否希望递归解析对象类型?例如,假设我有 type Person 和查询 { me: { name father: {name father: { name } }}},它应该返回 3 个人:我、爸爸、爷爷?
  • 您还没有为.historical 定义解析器函数,并且您的架构的rootValue 也没有这样的属性。所以它是null
  • 我不是试图递归地解析类型,我只是想为我的查询添加一个命名空间。我可以编写一个适用于这种情况的解析器函数吗?

标签: javascript graphql


【解决方案1】:

人们经常为了拆分代码而需要命名空间,不确定这是否是您的最终目标,但您也可以通过这种方式实现:

# in one file
type Mutation {
    login(username: String, password: String): User
}

# in other file
extend type Mutation {
    postX(title: String, message: String): X
}

【讨论】:

  • 这不是我的问题的解决方案,因为我没有使用gql,而是对象,而且我根本没有使用突变。
  • 是否是突变无关紧要,您只需将类型更改为查询即可。但是如果你不使用 gql 那么它确实不是一个解决方案。
猜你喜欢
  • 2011-03-04
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
相关资源
最近更新 更多