增加 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;
我有一个包含两列的 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;