0

我们对联邦图方法还很陌生,如果我们试图通过将其拆分为更小的实体来使其过于复杂,我们希望能得到一些反馈。

例子:

我们有一个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
     ....
    }
  }
}
4

0 回答 0