是否有一种动态捕捉和修改全局响应的方法?我可以对以下一个查询执行此操作,但是我想对所有查询执行此操作。
apollo: {
post: {
query: Post,
update(data) {
return data.map(item => Object.assign(item, {foo: 'bar'})
}
}
}
此问题已简化,但在幕后,我想将构造函数(类)应用于所有对象...
我正在使用nuxt-apollo。我在clientConfig或其他地方搜索了一种方法,因此解决方案可能与阿波罗有关。
感谢您的建议!
修改: 好的,我发现使用apollo-link可以做到这一点,但是我无法修改响应。这里的代码:
const constructorMiddleware = new ApolloLink((operation, forward) => {
return forward(operation).map(response => {
Object.keys(response.data).map(key => {
if (!Array.isArray(response.data[key])) return;
const newResponse = response.data[key].map(item => {
return item.__typename === 'post'
? Object.assign(item, { foo: 'bar' })
: item
})
console.log(newResponse)
response.data[key] = newResponse
})
return response
})
})
我可以在newResponse中看到foo: bar
,但是nuxt-apollo返回的graphql不包含这个newResponse,而只是原始的。
ApolloLink是否覆盖响应?阿波罗缓存会改变这一点吗?
修改2 : 我尝试进行chain links,并且下一个链接中很好地显示了ConstructorMiddleware的newResponse。因此问题似乎出自nuxt-apollo或更多的vue-apollo ...