0

我想知道是否有办法使用graphql在name属性上加入两个 rest API 。这些是我的回应

// products API
[
 {
  id: "0001",
  name: "a name",
  color: "black",
  size: "L"
 },
 {
  id: "0002",
  name: "an other name",
  color: "red",
  size: "M"
 }
]

// price API
[
 {
  id: "xyz1",
  name: "a name",
  price: 10
 },
 {
  id: "xyz2",
  name: "an other name",
  price: 20
 }
]

我想用graphql来组合它们,这样

// response from graphql
[
 {
  id: "0001",
  name: "a name",
  price: 10,
  color: "black",
  size: "L"
 },
 {
  id: "0002",
  name: "an other name",
  price: 20,
  color: "red",
  size: "M"
 }
]

graphql 是正确的工具吗?

4

1 回答 1

0

GraphQL 不支持在某些属性中加入 2 个(或更多)API。您可以做的是从解析器中的两个 API 获取数据并创建一个包含两个结果的对象。

类似(伪代码):

const products: yourDefinedType = []

fetch.productsAPI(productFromAPI
   fetch.pricesAPI(pricesFromAPI
      if (pricesFromAPI.name === productFromAPI.name) {
         product.push({
           id: productFromAPI.id,
           name: productFromAPI.name,
           color: productFromAPI.color,
           size: productFromAPI.size,
           price: pricesFromAPI.price
         })
      }
   )      
)

请记住,这会带来性能问题,因为您要获取每种产品的所有价格。另一种方法是让您的价格 REST api 支持按名称获取价格并仅获取您需要的价格。

于 2018-06-14T06:17:58.180 回答