Apollo-link-state:查询解析器仅在高速缓存未命中时调用,怎么办?

时间:2018-09-17 23:48:44

标签: javascript apollo-link-state

阿波罗链接状态文档说:查询解析器仅在缓存未命中时调用。我觉得这值得更多解释,我很困惑。

请让我介绍我的用例。

这是我的默认状态(我删除了与该点无关的许多字段):

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?

0 个答案:

没有答案