Angular Apollo GraphQL watchQuery 与订阅

Posted

技术标签:

【中文标题】Angular Apollo GraphQL watchQuery 与订阅【英文标题】:Angular Apollo GraphQL watchQuery vs subscription 【发布时间】:2020-08-03 22:25:07 【问题描述】:

我是 GraphQL 新手,需要一些帮助...

正如我所见,GraphQL 中有很多组件,例如 Query、Mutation 和 Subscription。在 Angular Apollo Client 中,我有两种处理 Query 的方法:apollo.query 和 apollo.watchQuery。据我了解,当 watchQuery 不断监视更新时,查询方法仅获取一次数据。如果是这样,watchQuery 和 GraphQl 订阅有什么区别?

【问题讨论】:

【参考方案1】:

正如官方apollo docs 中所述:“GraphQL 订阅是一种将数据从服务器推送到选择侦听来自服务器的实时消息的客户端的方式。订阅类似于查询,因为它们指定了一个集合传递给客户端的字段,但不是立即返回单个答案,而是每次在服务器上发生特定事件时发送结果。”

所以订阅只是监听来自后端的一些推送更改,相反,watchQuery 是一个查询,只要重新获取该查询或从其他任何地方更改与该查询相关的数据,此方法将继续发出更新的数据。

我不知道您是否将 watchQuery 与“实时查询”混淆了,但尚不支持实时查询。

【讨论】:

以上是关于Angular Apollo GraphQL watchQuery 与订阅的主要内容,如果未能解决你的问题,请参考以下文章

使用 graphql 和 apollo 客户端刷新 Angular 令牌

Angular Apollo GraphQL watchQuery 与订阅

Apollo - Angular 应用程序中子组件的多个 graphql 订阅

Apollo Angular 无法从 GraphQL/MongoDB 获取数据

angular 的 Apollo 客户端:从 graphql 文件生成代码

Angular 中 GraphQL 的 Apollo 的 watchQuery().valueChanges 的正确返回类型是啥?