Angular Apollo在突变中使用来自重新获取查询的响应

时间:2018-04-12 13:45:08

标签: angular graphql apollo

我正在使用Apollo和GraphQL开展Angular项目。我有一个突变,用于更新与其相关的相关详细信息的帐户列表。成功变异后,我使用refetchqueries来查询API以获取更新的帐户列表。一切都有效,直到这部分。

channelId

'数据'对于订阅返回来自变异的响应,但有没有办法可以使用' queryAccounts'返回的数据。哪个也是这个突变的一部分?

似乎有一种方法可以做出反应,但我没有成功在Angular中做类似的事情。

2 个答案:

答案 0 :(得分:1)

您可以拥有一个在重新获取时始终会更新的watchQuery

this.apollo.watchQuery({
            query: query,
            variables: variables
        })
        .valueChanges
        .pipe(
            map(res => res.data)
        )
        .subscribe(data => {
            //Updated your data here
        }, err => {

        })
       })

答案 1 :(得分:0)

您提到反应中有多种方法,但我认为这是不正确的。

让我解释一下阿波罗中的突变是如何工作的。

  1. 您使用curl_easy_setopt(curl, CURLOPT_CAINFO, my-path);选项运行.crt
  2. 订阅时,会发出HTTP请求(在大多数情况下,有时是WS或某些其他传输层)
  3. Apollo从服务器收到响应。
  4. 更新商店。
  5. 您订阅的可观察对象发出结果(您的apollo.mutate()
  6. 接下来,在refetchQueries中指定的每个查询都会启动一个新的HTTP请求并针对服务器运行。
  7. Apollo在每个响应上更新商店。
  8. 侦听这些查询的组件会获得更新的结果

我在文档https://www.apollographql.com/docs/angular/features/cache-updates.html#after-mutations

中对此进行了解释。

基本上,refetchQueries不会获取或访问数据。