可以为 GraphQL 解析器转换返回类型吗

Posted

技术标签:

【中文标题】可以为 GraphQL 解析器转换返回类型吗【英文标题】:Can the return type be transformed for a GraphQL resolver 【发布时间】:2021-03-12 16:59:34 【问题描述】:

我有一个graphene-django GraphQL API,我在其中添加了自定义指令和中间件,与graphene-django-extras 提供的非常相似。有几个地方枚举类型作为graphene.Int() 字段返回,我希望能够使用指令来转换graphene.String(),但它本身并不能这样做。例如。


  foo 
    bar            # return Int
    # vs
    bar @readable  # return String
  

这可能吗?我正在查看 ResolvInfo 字段,返回类型有一些内容,但最初的尝试不起作用。

编辑:FWIW 我认为 API 当前是使用 Python 和 Graphene 开发的并不重要。问题更多是关于 GraphQL 是否支持这一点,我假设如果不支持,那么任何语言或库都不会使它成为可能。

【问题讨论】:

【参考方案1】:

拥有可变输出类型并不真正符合 graphQL 的精神。所以严格来说,你不应该尝试这样做。话虽如此,您可以轻松地为另一种类型添加另一个字段,即

type Foo 
    barStr: String
    barInt: Int

然后只需在查询中询问您想要的那个。

【讨论】:

以上是关于可以为 GraphQL 解析器转换返回类型吗的主要内容,如果未能解决你的问题,请参考以下文章

Nestjs / GraphQL - Playground 为查询返回 Null 错误。我的解析器?

使用 eslint 从 graphql 解析器返回啥严格的打字稿类型?

GraphQL 解析器可以强制检索父级中的参数吗?

NodeJs 中的 GraphQl - 对象类型的解析器

在 GraphQL 中是不是可以在对象类型级别上使用解析器?

GraphQL 解析器为具有关系的对象返回啥?