如何通过具有自己的解析器的属性对graphql数组进行排序

时间:2018-11-15 14:18:27

标签: graphql

假设我有一个类似这样的查询

{
    items {
        id
        name
        price
    }
}
  • 项目解析器正在返回数组。
  • price拥有自己的解析器

我如何说基于价格对商品数组应用排序逻辑?在所有价格解决之后。

1 个答案:

答案 0 :(得分:1)

不幸的是,这是不可能的。您的items字段必须在price字段之前进行解析,因为必须使price解析程序可以使用每个项目的值。

解决此问题的唯一方法是将price解析器内部的逻辑移至项目解析器本身。一个简单的例子:

const resolvers = {
  Query: {
    items: async () {
      const items = await getItems()
      return Promise.all(items.map(async (item) => {
        const price = await getPriceForItem(item)
        return { ...item, price }
      }))
    }
  }
}