图形数据库 |阿波罗客户端 |如何更改现有订阅中的变量?

Graphql | Apollo client | How to change variables in existing subscription?

我已经设置了带有订阅的 Apollo 服务器和客户端。在基本设置中一切都按预期工作。我正在使用 Apollo Client 的 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 回调触发了事件。

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

期望 - 一旦用户 select 设置了任何值并应用过滤器,我想更新我在服务器上的订阅以开始使用新过滤器?

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