Graphql | Apollo客户|如何更改现有订阅中的变量?

时间:2019-05-06 18:58:24

标签: apollo apollo-client graphql-js apollo-server graphql-subscriptions

我已经设置了带有订阅的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回调在事件上触发。

问题-在我们的应用程序中,“订阅”过滤器是动态的,用户可以选择不同的值来影响过滤器。我浏览了文档和许多(许多)文章,但找不到更新过滤器或如何处理此用例的方法?

期望-用户选择任何值并应用过滤器后,我想更新服务器上的订阅以开始使用新的过滤器吗?

1 个答案:

答案 0 :(得分:0)

创建后,您将无法修改订阅。过滤器更改后,您需要在当前unsubscribe上调用Observer,然后通过使用更新后的变量调用Observer方法来创建新的subscribe。如果您查看the source code,这就是react-apollo的{​​{1}}组件处理它的方式。如果您碰巧已经在使用React,我强烈建议您使用可用的组件,而不要尝试重新发明轮子。