gpt4 book ai didi

apollo - 将变量传递给外部解析引用

转载 作者:行者123 更新时间:2023-12-05 06:17:31 25 4
gpt4 key购买 nike

我已经使用 Apollo Federation 两个月了,但实际上卡住了。我不知道如何在我的两个 graphql 服务之间传递变量。

我有一个网站(网站 graphql 服务)有订单(订单 graphql 服务)。我有一个查找网站的查询,对于这些网站,我想要一些日期范围内的订单统计信息。这里是 typedef(网站):

type Query {
websites(orderFilter: OrderFilterInput): [Website!]
}

type Website @key(fields: "id") {
id: ID!
name: String!
url: String!
orderSummary(orderFilter: OrderSummaryFilterInput): OrderSummary
}

input OrderSummaryFilterInput {
beginDate: Date
endDate: Date
}

extend type OrderSummary @key(fields: "websiteId") {
websiteId: String! @external
}

解析器:

orderSummary: (website, { orderSummaryFilter }) => {                
console.log("orderSummaryFilter", orderSummaryFilter); // filters are OK
// HOW CAN I PASS orderFilterSummary to my order graphql service here ????
return { __typename: "OrderSummary", websiteId: website.id };
}

并订购 graphql 服务

类型定义部分:

type OrderSummary @key(fields: "websiteId") {
websiteId: String!
count: Int
amount: Int
}

解析器部分:

// order gql service

OrderSummary: {
__resolveReference(website, args, info) {
console.log("website id :", website.id); // I ve got my website ID
// HOW TO GET OrderSummaryFilter here ????
},
},

我如何访问订单摘要过滤器变量以便 graphql 解析器?谢谢。

最佳答案

据我所知,不可能将变量从一个服务发送到另一个服务然后发送 ID。但是有一个解决方案。

如果您想传递变量,请在订单服务中扩展您的Website 类型,而不是在网站服务中扩展订单类型。

订单类型定义:

extend type Website @key(fields: "id") {
id: ID! @external
orderSummary(orderFilter: OrderSummaryFilterInput): OrderSummary @requires(fields:"id")
}

订单解析器:

Website: {
orderSummary: async (website, { orderFilter }) => getOrderSummary(orderFilter) //get orderSummary with orderFilter
},

关于apollo - 将变量传递给外部解析引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61640022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com