增加 msg.payload[i] 变量

Increasing the msg.payload[i] variable

我有一个包含两列的 MySQL 数据库:用户名密码。我想一一列出用户名。

第一个函数保存我的数据库查询:

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

第二个函数循环直到显示所有数据库用户名。 maxarray 是我的数据库中用户名的最大数量。

var maxarray = global.get("maxarray");
var i;

for (i = 0; i < maxarray; i++) {
    msg.payload = msg.payload[i].Username;
    node.send(msg);
}

return;

每当我运行这个,它给我一个错误:

"TypeError: Cannot read property '2' of undefined"

如果你想导入,这是我的流程。

[{"id":"213ba9d6.1ba576","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"820a48f5.ff49d8","type":"debug","z":"213ba9d6.1ba576","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":490,"y":100,"wires":[]},{"id":"673daf0e.c65b8","type":"inject","z":"213ba9d6.1ba576","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"\"SELECT * FROM userlog\"","payload":"","payloadType":"date","x":100,"y":100,"wires":[["3724e918.bf5b86"]]},{"id":"dbe2587d.cfb7a8","type":"mysql","z":"213ba9d6.1ba576","mydb":"f1e0508e.13503","name":"db","x":290,"y":100,"wires":[["fd991622.c20928"]]},{"id":"3724e918.bf5b86","type":"function","z":"213ba9d6.1ba576","name":"msg.topic","func":"msg.topic = \"SELECT * FROM userlog\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":180,"y":140,"wires":[["dbe2587d.cfb7a8"]]},{"id":"fd991622.c20928","type":"function","z":"213ba9d6.1ba576","name":"for loop","func":"var i;\nvar array;\nfor (i = 0; i < msg.payload.length; i++) {\n    msg.payload = array[i].Username;\n    node.send(msg);\n}\nreturn;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":380,"y":140,"wires":[["820a48f5.ff49d8"]]},{"id":"f1e0508e.13503","type":"MySQLdatabase","name":"","host":"127.0.0.1","port":"3306","db":"test dump","tz":"","charset":"UTF8"}]

您需要在循环之前获取 msg.payload 的副本,因为您在发送 msg 对象之前已经替换了它。

您可能还应该使用数组长度,而不是试图在全​​局变量中保持跟踪

var i;
var array = msg.payload

for (i = 0; i < array.length; i++) {
    msg.payload = array[i].Username;
    node.send(msg);
}

return;