我正在使用 Apollo 和 GraphQL 开发 Angular 项目。我有一个突变,可以更新帐户列表及其相关详细信息。成功突变后,我使用 refetchqueries 来查询 API 以获取更新的帐户列表。直到这一部分一切正常。
this.apollo.mutate({
mutation: mutationCreateNewAccount,
variables: {
accountNumber: this.accountNumber,
accountType: this.accountType,
routingNumber: this.routingNumber,
nameOfAcountHolder: this.name
},
refetchQueries: [{
query: queryAccounts,
variables: { accountNumber: this.accountNumber }
}]}).subscribe(({ data }) => console.log(data),
订阅的“数据”返回来自突变的响应,但有没有一种方法可以使用“queryAccounts”返回的数据,该数据也作为此突变的一部分运行?
似乎有一种方法可以在 React 中做到这一点,但我在 Angular 中没有成功做类似的事情。
你提到有一些方法可以在反应中做到这一点,但我认为这不是真的。
让我解释一下 Apollo 中的突变是如何工作的。
apollo.mutate()
选项运行 refetchQueries
console.log(data)
)refetchQueries
中指定的每个查询都会启动一个新的 HTTP 请求并针对服务器运行。我在文档中对此进行了解释:https://www.apollographql.com/docs/angular/features/cache-updates.html#after-mutations
基本上,refetchQueries 并不是获取或访问数据。
您可以拥有一个在重新获取时始终更新的 watchQuery
this.apollo.watchQuery({
query: query,
variables: variables
})
.valueChanges
.pipe(
map(res => res.data)
)
.subscribe(data => {
//Updated your data here
}, err => {
})
})