订阅未使用Node.js / vanilla中的Apollo客户端触发

时间:2019-06-01 14:32:29

标签: node.js graphql node-red apollo-client

我正在使用Apollo graphql框架,似乎正在启动并运行订阅。但是我无法从订阅中触发任何事件,有关Apollo客户端的文档很少涉及纯Node.js和普通javascript。

该项目正在为红色节点制作几个节点,这些节点将使用供应商的graphql接口来获取有关功耗和电价的不同数据。为此,我还需要使用订阅。对graphql来说是相当新的东西,因此推荐使用apollo框架。

result = tibber.getSubscription('subscription{ liveMeasurement(homeId:"c70dcbe5-4485-4821-933d-a8a86452737b"){timestamp power maxPower accumulatedConsumption accumulatedCost}}');
// returns an Observable from the apollo client subscribe()
// client.subscribe({ query: gql`${query}` });

let sub = result.subscribe({
    next (data) { console.log(data); },
    error (err) { console.log(err); }
  });

本来希望console.log在几秒钟后会触发一些数据,因为此订阅适用于供应商api资源管理器上的演示帐户。 没有返回错误,订阅对象(子)处于“就绪”状态。

1 个答案:

答案 0 :(得分:0)

我的建议:分而治之

我将从带有apollo客户端的标准react应用开始。为了简单起见,您可以使用<Query/>组件。在这一步中,最重要的是熟悉authentication

下一步:直接使用客户端,而不使用组件。仍使用react use ApolloConsumer-您的组件可以访问client prop。您可以使用从client.query()componentDidMount()console.log)中调用的setState

如果您喜欢香草this tutorial,则更合适。

下一步将与subscriptions一起使用。同样,从<Subscription/>组件开始。之后,您应该已经正确配置了客户端(传输,身份验证)。

在这一步,您开始移至节点env,例如寻找诸如this之类的示例,并结合先前获得的知识。