Graphql 如何在全球范围内捕获和修改阿波罗响应?

Graphql 如何在全球范围内捕获和修改阿波罗响应?,graphql,apollo,react-apollo,apollo-client,vue-apollo,Graphql,Apollo,React Apollo,Apollo Client,Vue Apollo,有没有一种方法可以动态地捕获和修改全局响应?我可以对下面这样的一个查询执行此操作,但我希望对所有查询执行此操作 阿波罗:{ 职位:{ 查询:Post,, 更新(数据){ 返回data.map(item=>Object.assign(item,{foo:'bar}) } } } 对于这个问题,它被简化了,但是在后台我想对所有对象应用一个构造函数(类) 我正在使用nuxt apollo。我在clientConfig或其他地方搜索了一种方法来实现这一点,因此解决方案可能与apollo有关 谢谢你的建

有没有一种方法可以动态地捕获和修改全局响应?我可以对下面这样的一个查询执行此操作,但我希望对所有查询执行此操作

阿波罗:{ 职位:{ 查询:Post,, 更新(数据){ 返回data.map(item=>Object.assign(item,{foo:'bar}) } } } 对于这个问题,它被简化了,但是在后台我想对所有对象应用一个构造函数(类)

我正在使用nuxt apollo。我在clientConfig或其他地方搜索了一种方法来实现这一点,因此解决方案可能与apollo有关

谢谢你的建议

编辑: 好的,我发现阿波罗链接可以做到这一点,但我无法修改响应。代码如下:

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不包含这个新的响应,只包含原始响应。 apollo链接覆盖响应吗?apollo缓存是否更改了此设置

编辑2
我试过了,ConstructorMiddle的新响应在下一个链接中很好。所以问题似乎来自nuxt apollo,或者更多vue apollo…

嗨,你在哪里注册了你的
ConstructorMiddle
?我也有同样的问题,但我不知道在哪里注册apollo链接我想我的文章可能是对cu的一个很好的总结当前状态。您好,您在哪里注册了您的
构造函数中间件
?我也有同样的问题,但我不知道在哪里注册Apollo链接。我想我的链接可能是当前状态的一个很好的总结。