Apollo Server:如何 post-process all `id: ID` fields without directives?

Apollo Server: how to post-process all `id: ID` fields without directives?

我们的架构如下所示:

type Product {
  id: ID!
  name: String!
}

type User {
  id: ID!
  firstName: String!
}

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

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

type User {
  id: ID! @uniqueID
  firstName: String!
}
class UniqueIdDirective extends SchemaDirectiveVisitor {
  visitFieldDefinition(...) {
    ...
  }
}

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

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