Apollo Server:如何在没有指令的情况下对所有“id:ID”字段进行后处理?

Posted

技术标签:

【中文标题】Apollo Server:如何在没有指令的情况下对所有“id:ID”字段进行后处理?【英文标题】:Apollo Server: how to post-process all `id: ID` fields without directives? 【发布时间】:2021-02-03 08:28:51 【问题描述】:

我们的架构如下所示:

type Product 
  id: ID!
  name: String!


type User 
  id: ID!
  firstName: String!

后端返回自动增量 ID,我们希望按类型为它们添加前缀,目前,我们正在为此使用指令:

type Product 
  id: ID! @uniqueID
  name: String!


type User 
  id: ID! @uniqueID
  firstName: String!

class UniqueIdDirective extends SchemaDirectiveVisitor 
  visitFieldDefinition(...) 
    ...
  

有没有办法避免在任何地方添加@uniqueID 而只依赖于ID 类型?换句话说,是否可以针对我们的原始模式编写模式访问者?

【问题讨论】:

【参考方案1】:

是的,有可能,通过mapSchema。这里已经回答了:https://github.com/ardatan/graphql-tools/discussions/2126。

【讨论】:

以上是关于Apollo Server:如何在没有指令的情况下对所有“id:ID”字段进行后处理?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Apollo Server 但使用 express-graphql 的情况下使用 apollo-datasource-rest

如何使用 Apollo Server 2.0 GraphQL 将模式指令中的信息作为返回的数据包含在内?

在 GraphQL Apollo Server v2.0 中公开 HTTP GET API

如何选择性地允许 apollo-server-express 中的查询?

Apollo Server 2.x express 中间件

如何避免在错误响应中将错误集合包装在 Apollo Server V2 中的错误对象中