我们对联邦图方法还很陌生,如果我们试图通过将其拆分为更小的实体来使其过于复杂,我们希望能得到一些反馈。
例子:
我们有一个Ticket
:
type Ticket @key(fields: "id") {
id: ID!
ownerId: ID!
categoryId: ID!
title: String!
data: String
startDate: DateTime!
endDate: DateTime!
venue: String
county: String
section: String
seat: String
}
extend type Category @key(fields: "id") {
id: ID! @external
tickets: [Ticket!]!
}
我们有一个Category
type Category @key(fields: "id") {
id: ID!
name: String!
type: CategoryType!
}
extend type Ticket @key(fields: "id") {
id: ID! @external
categoryId: ID! @external
category: Category @requires(fields: "categoryId")
}
我们现在需要实现一种列出待售产品的方法,并设置 listPrice 等。将来甚至是出价。所以我的想法是创建一个新的联合服务,处理listedProducts
如下:
type ListedProduct @key(fields: "id") {
id: ID!
sellingPrice: Float!'
ticketForSale: Boolean!
}
extend type Product @key(fields: "id") {
id: ID! @external
ticketForSale: Boolean!
sellingPrice: Float!
}
到目前为止,一切都很好。但是我遇到麻烦的地方是我只想在 Category 实体下呈现listedProducts。这将需要一个 3 路参考才能解决,如果不直接在服务之间进行通信,我将如何做到这一点?
预期结果:
query {
category() {
// Only listedProducts should render here, but with the type of a Product.
products() {
id
....
}
}
}