我一直在尝试让 Vue + Apollo 与我的 GraphQL 服务器一起工作,除了订阅部分之外,它就像一个魅力。
我在用着
apollo: {
foo: {
query: ...,
subscribeToMore: {
document: ...,
updateQuery: (previous, { subscriptionData }) => {
...
}
如示例中所示(如此处)。
新的subscriptionData
到了,但我不知道如何将它与组件合并data.foo
。
所有的例子都使用previous.foo
,但我previous
的是{Symbol(id): "ROOT_QUERY"}
。
似乎我在这里错过了一个可能简单但至关重要的理解。
如何将新subscriptionData
的组件数据对象放入模板中以访问它?
解决方案
原来的问题是第一个订阅在初始查询结果在缓存中可用之前返回。
检查previous
作为ROOT_QUERY
数据存在的元素解决了这个问题。
Apollo-Devtools 在这里也有助于更好地理解缓存中的数据结构。