node-red 等待异步查询 http-response
node-red wait for async query for http-response
我用 node-red 完成了 REST 端点,它执行一些异步任务,例如对数据库的 odbc 查询。
当我生成对 http 响应的查询时。它只是挂在浏览器上。
看起来我需要将 req 和 res 对象转发到 http 响应。但是我该怎么做呢?
流程如下:
[{"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"}]
您需要确保它是从 http-in
节点一直流向 http-out
节点的同一消息对象。
此消息对象将具有 msg.req
和 msg.res
字段,msg.res
字段将由 http-out
节点用于将响应发送回浏览器.
任何接受输入然后将其转发的节点都应该保留这些字段,而不仅仅是为输出创建一个新对象。所有内置节点都正确执行此操作,所有已发布的第 3 方节点也应如此。如果你发现一个不遵循这个模式的人,你应该向维护者提出一个错误。
您的流程看起来不错,但我从未使用过您拥有的数据库节点,因此无法对这些发表评论。
我用 node-red 完成了 REST 端点,它执行一些异步任务,例如对数据库的 odbc 查询。
当我生成对 http 响应的查询时。它只是挂在浏览器上。 看起来我需要将 req 和 res 对象转发到 http 响应。但是我该怎么做呢?
流程如下:
[{"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"}]
您需要确保它是从 http-in
节点一直流向 http-out
节点的同一消息对象。
此消息对象将具有 msg.req
和 msg.res
字段,msg.res
字段将由 http-out
节点用于将响应发送回浏览器.
任何接受输入然后将其转发的节点都应该保留这些字段,而不仅仅是为输出创建一个新对象。所有内置节点都正确执行此操作,所有已发布的第 3 方节点也应如此。如果你发现一个不遵循这个模式的人,你应该向维护者提出一个错误。
您的流程看起来不错,但我从未使用过您拥有的数据库节点,因此无法对这些发表评论。