这个错误通常是由于微服务中存在与其它服务中定义的类型重复的情况造成的。可以通过对类型进行命名空间处理或限定范围的方式来解决。具体操作可以在每个服务的 typedefs 中添加namespace,如下所示:
#User service
type User {
id: ID!
name: String!
}
#Order service
type Order {
id: ID!
user: User! @provides(fields: "id")
}
# Product service
type Product {
id: ID!
name: String!
user: User! @provides(fields: "id")
}
然后在网关中使用 Apollo Gateway 提供的指令 @key 和 @keyFields 来关键字定义,以避免不同服务中相同的定义,如下所示:
# Gateway service
extend type User @key(fields: "id @namespace(name: \"user\")") {
id: ID! @external
}
extend type Order @key(fields: "id") {
id: ID! @external
user: User @provides(fields: "id")
}
extend type Product @key(fields: "id") {
id: ID! @external
user: User @provides(fields: "id")
}
上一篇:Avalara:由于JSON转换异常,无法从TransactionBuilder创建TransactionModel。
下一篇:Avalon Dock: 如何设置 LayoutAnchorablePaneControl 的 BorderBrush