我已经设置了带有订阅的Apollo服务器和客户端。一切按基本设置中的预期进行。我正在使用Apollo客户端的Subscribe方法进行订阅。如下所示:
graphqlClient.subscribe({ query, variables }).subscribe({
next: d => {
onData(d);
},
error: error => {
handleErrorResponse(error).catch(e => {
Logger.notifyError(new Error(`Real-time update error | ${e.message}.`));
});
}
});
这有效,我可以看到onData回调在事件上触发。
问题-在我们的应用程序中,“订阅”过滤器是动态的,用户可以选择不同的值来影响过滤器。我浏览了文档和许多(许多)文章,但找不到更新过滤器或如何处理此用例的方法?
期望-用户选择任何值并应用过滤器后,我想更新服务器上的订阅以开始使用新的过滤器吗?
答案 0 :(得分:0)
创建后,您将无法修改订阅。过滤器更改后,您需要在当前unsubscribe
上调用Observer
,然后通过使用更新后的变量调用Observer
方法来创建新的subscribe
。如果您查看the source code,这就是react-apollo
的{{1}}组件处理它的方式。如果您碰巧已经在使用React,我强烈建议您使用可用的组件,而不要尝试重新发明轮子。