node-red 中的全局上下文,用于存储 http req 和 res 对象

Global context in node-red to store http req and res objects

我们正在探索将 node-red 作为快速创建我们团队所需的小型实用程序的选项。

我们的典型模式是:
1) 从 HTTP 查询参数中获取搜索条件
2) 查找与我们沙发数据库中匹配的记录
3) 为数组中的每个结果调用两个 API 之一
4) 将所有结果组合成一个数组并return 响应原始请求

在第 3 步,可能有多个 msg 有效负载,并且流以某种方式丢失了原始的 Http req 和 res 对象。对于最后一步,我们将它们存储在全局上下文中,并在所有结果合并后再次使用。

如果有多个请求,全局上下文是否有可能被覆盖?是跨多个请求共享的吗?或者在上述情况下是安全的?

一般来说,将 msg.req/res 存储到上下文中是一种应该避免的反模式。只要您必须并行处理两个请求,第二个就会覆盖第一个。

我会首先追踪这些属性在您的流程中究竟丢失的位置。节点旨在传递所有消息属性。有一些边缘情况是可以接受的,但它们非常具体。

如果您发现某个节点丢失消息属性,则可能是该节点存在需要修复的错误。