node.js - nodejs/vanilla 中的 Apollo-client 未触发订阅
问题描述
我正在使用 Apollo graphql 框架,似乎正在启动并运行订阅。但是我无法从订阅中触发任何事件,并且围绕 Apollo 客户端的文档很少涉及纯 nodejs 和 vanilla javascript。
该项目正在为 node-red 制作几个节点,它将使用供应商的 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资源管理器上的演示帐户一起使用。没有返回错误并且订阅对象(子)处于“就绪”状态。
解决方案
我的建议:分而治之
我将从带有 apollo 客户端的标准反应应用程序开始。为简单起见,您可以使用<Query/>
组件。在这一步中,最重要的是熟悉身份验证
下一步:直接使用客户端,不使用组件。仍在使用 react 使用ApolloConsumer - 您的组件可以访问client
prop。您可以使用client.query()
从componentDidMount()
( console.log
, setState
) 调用。
如果您更喜欢香草,本教程可能更合适。
下一步将使用订阅。再次,从<Subscription/>
组件开始。之后,您应该已经正确配置了客户端(传输、身份验证)。
在这一步,你开始转向 node env,fe 寻找这样的例子并结合之前获得的知识。
推荐阅读
- firebase - 如何在不读取firestore中文档内容的情况下检查文档ID是否存在?
- javascript - 如何只访问给定对象的第一个元素而不访问数组?
- c++ - C++ 从日期字符串解析时区
- r - R 包“ElemStatLearn”不可用(对于 R 版本 3.6.3)是否有任何替代方案可用
- python - Python:从列表中写入 .gz 压缩文件
- java - HLS 播放问题
- python - 如何循环遍历模型 Python 中的字符串?
- sql - SQL Server - 获取删除了分钟和秒的日期时间(仅限日期和小时)
- python - 如何将 word2vec 生成的特征与 VGGNet 生成的特征连接起来
- java - 是否可以恢复父类的重写方法?