如何使用Node-RED组合两个SQLite查询

时间:2018-02-13 16:50:14

标签: node.js sqlite node-red

我有两个sql查询,我想对同一个数据库运行。我想将两个查询的结果合并到一个对象中,以便我可以在未来的html模板中使用它。

单独运行它们可以按预期工作,并返回一个包含数据库中正确数据的对象。

以下是Node-RED流程的屏幕截图。 Screenshot of node red flow

在我的组合函数中,我尝试了以下代码,但它只给了我两个独立的数组,其中包含一个对象:

DB

我相信这是因为查询是一个接一个地执行的。有没有办法同时执行它们并存储结果?

2 个答案:

答案 0 :(得分:1)

combine函数节点替换为连接节点,将其设置为在接收到2条消息时加入,如果您使用这些选项,它应该能够加入2个数组

答案 1 :(得分:1)

一种常见的误解是将两条路径连接到一个功能节点会以某种方式组合两个msg对象 - 由于单线程nodejs流处理器,这些对象可以保证在不同时间到达...

将注入的事件拆分为两个并行路径没有任何好处,这两个路径需要在处理之前加入。相反,它更容易触发第一个查询(例如getSchedules),将其连接到更改节点,您将输出结果移动到msg.schedules,最后将更改节点连接到第二个查询(例如getExams)。如果查询节点表现良好,则第二个应将检查结果放在msg.payload中,而不会触及传入的msg.schedules数据。

此时,您应该拥有一个包含两组数据的msg对象 - 因此不需要组合功能。虽然您有2个串联查询节点,但它们可以使用相同的配置节点,因此它们共享与数据库的连接。