【问题标题】:node-red wait for async query for http-responsenode-red 等待 http-response 的异步查询
【发布时间】:2018-03-12 17:27:29
【问题描述】:

我使用 node-red 完成了 REST-endpoint,它执行一些异步任务,例如对数据库的 odbc-query。

当我查询到 http 响应时。它只是挂在浏览器上。 看起来我需要将 req 和 res 对象转发给 http-response。但是我该怎么做呢?

流程如下:

[{"id":"a35e6901.509a1","type":"http in","z":"ec714e97.d73b58","name":"","url":"/get","method":"get","upload":false,"swaggerDoc":"","x":287.8571472167969,"y":1660.357177734375,"wires":[["7c116e0a.f8d67"]]},{"id":"98e22918.79bc4","type":"sqldbs","z":"ec714e97.d73b58","mydb":"8df7f8b0.bd44c","querytype":"select","name":"","x":723.5714111328125,"y":1644.6428833007812,"wires":[["de837ef9.5c1cf8"]]},{"id":"7c116e0a.f8d67","type":"function","z":"ec714e97.d73b58","name":"","func":"msq.topic = \"Select * from User\"\nreturn msg;","outputs":1,"noerr":0,"x":469.28570556640625,"y":1613.9286499023438,"wires":[["98e22918.79bc4"]]},{"id":"de837ef9.5c1cf8","type":"http response","z":"ec714e97.d73b58","name":"","statusCode":"","headers":{},"x":922.1428833007812,"y":1677.8570861816406,"wires":[]},{"id":"8df7f8b0.bd44c","type":"sqldbsdatabase","z":"","host":"127.0.0.1","port":"1433","db":"test","dialect":"mysql"}]

【问题讨论】:

    标签: node.js node-red


    【解决方案1】:

    您需要确保它是从http-in 节点一直流向http-out 节点的同一个消息对象。

    此消息对象将具有msg.reqmsg.res 字段,msg.res 字段将被http-out 节点用于将响应发送回浏览器。

    任何接受输入然后转发它的节点都应该保留这些字段,而不仅仅是为输出创建一个新对象。所有内置节点都正确执行此操作,所有已发布的第 3 方节点也应正确执行此操作。如果你发现一个不遵循这种模式的,你应该向维护者提出一个错误。

    您的流程看起来不错,但我从未使用过您拥有的数据库节点,因此无法对这些节点发表评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-06
      • 2020-06-19
      • 1970-01-01
      • 2023-04-06
      • 2017-06-10
      • 2019-06-30
      • 1970-01-01
      • 2018-12-11
      相关资源
      最近更新 更多