Node-Red:使用CSV节点

时间:2014-07-07 13:28:18

标签: node.js node-red

我正在发送一个csv文件:

A1,A2,A3,A4
B1,B2,B3,B3

到具有4列(A,B,C,D)的csv节点。

我能够将第一个csv记录看作JS对象,但我无法访问其余记录。

csv节点输出如下所示:

(Object) { "A": "A1", "B": "A2", "C": "A3", "D": "A4\r\nB1" }

如何使用csv节点访问每条记录?

1 个答案:

答案 0 :(得分:2)

csv节点当前希望每个输入消息只包含记录,因为它一次只能输出一条记录。

解决此问题的最简单方法是在csv节点之前插入一个函数节点,将多行消息分解为单独的消息:

var lines = msg.payload.split("\n");
var messages = [];

for (var i=0; i<lines.length; i++) {
   //deep copy the orginal message to ensure we don't loose any other fields
   var tmp = JSON.parse(JSON.stringify(msg));
   //the trim deals with dos line endings
   tmp.payload = lines[i].trim();
   messages.push(tmp);
}
return [messages];