阿波罗链接状态文档说:查询解析器仅在缓存未命中时调用。我觉得这值得更多解释,我很困惑。
请让我介绍我的用例。
这是我的默认状态(我删除了与该点无关的许多字段):
rails s
我想进行以下查询:
const defaults = {
__typename: 'State',
quote: {
__typename: 'Quote',
items: []
}
}
所以我创建了此类:
query getItem {
quote: {
item(id: "*******") { name quantity }
}
}
这是我最喜欢的查询解析器:
class Quote {
constructor({ items }) {
this.__typename = 'Quote'
this.items = items
this.item = this.item.bind(this)
}
item(id) {
return this.items.filter(item => item.id === id)[0]
}
}
但是我的getItem查询返回一个空对象{}。
因此,让我们再次考虑以下句子:“仅在未命中缓存时调用查询解析器。”
我认为运行查询时,在缓存中找到了默认的报价,因此没有缓存未命中,并且缓存中没有item字段,所以我得到了一个空对象。
我试图将新的Quote对象设置为默认的Quote值,因此我的查询将使用其item方法,但无法正常工作。
所以我想知道是否有一种方法可以像方法Apollo Server一样,将带有方法的自定义对象作为字段值返回,并将其方法用作subResolvers?