gpt4 book ai didi

javascript - 如何在 node-red 中增加 msg.payload[i]

转载 作者:行者123 更新时间:2023-11-30 13:54:13 28 4
gpt4 key购买 nike

我们正在 ubuntu 服务器上工作,我们已经在其中安装了 node-red。我们想要的是从 MySQL 数据库的一个表中获取数据,然后将其移动到另一个表中。

我们的流程是这样的:

enter image description here

我们的“选择公差” Node 包含:

msg.topic = "SELECT * FROM Tolerance";
return msg;

简单的代码,从我们的数据库中选择数据。如果我们像这样连接调试 Node :

enter image description here

然后我们看到如下所示的输出:

enter image description here

我们想要选取所有数据,因此我们需要遍历数组中的所有对象并确保获取所有值并将它们发送到我们的新数据库表中。我们正在使用“New Tolerance” Node 来执行此操作,“New Tolerance”包含:

var i;
var secured = 1;

for (i = 0; i < msg.payload.length; i++) {
var time_start = msg.payload[i].time_start
var time_end = msg.payload[i].time_end
var temperatur_lpn = msg.payload[i].temperatur_lpn
var temperatur_rising = msg.payload[i].temperatur_rising
var temperatur_weather = msg.payload[i].temperatur_weather
var temp_compare_WL = msg.payload[i].temp_compare_WL
var temp_compare_WR = msg.payload[i].temp_compare_WR

var out = "INSERT INTO Sunrise_Tolerance (time_start, time_end, temperatur_lpn, temperatur_rising, temperatur_weather, temp_compare_WL, temp_compare_WR, secured)"

out = out + " VALUES ('" + time_start + "','" + time_end + "','" + temperatur_lpn + "','" + temperatur_rising + "','" + temperatur_weather + "','" + temp_compare_WL + "','" + temp_compare_WR + "','" + secured + "');"

msg.topic = out;
return msg;
}

问题是我们只收到第一行数据(数组中的第一个对象)而不是其余的。谁能弄清楚为什么我们没有收到所有数据,而只收到第一个数据?

最佳答案

问题在于您在 for 循环中有一个 return 语句。

这将在它第一次到达该点时退出该函数 - 因此您的循环永远不会循环。

如果你想发送多条消息,你应该在 for 循环中使用 node.send(msg);。唯一需要注意的是,如果您多次使用同一个对象调用 node.send,因为消息是通过引用传递的,您会得到一些奇怪的副作用。由于您在此实例中只关心 msg.topic,因此您可以负担得起每次都创建一个新的消息对象。

因此,除了 return msg 语句,您还可以:


for (i ... ) {
var out = "INSERT ...";
...

node.send({topic: out});
}
// Return without any arguments so no further messages are sent.
return;

关于javascript - 如何在 node-red 中增加 msg.payload[i],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57624117/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com