Node-Red: работа с узлом CSV

Я отправляю файл csv:

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

на узел csv с 4 столбцами (A, B, C, D).

Я могу видеть первую запись csv как объект JS, но не могу получить доступ к остальным записям.

вывод узла csv выглядит следующим образом:

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

Как я могу работать с узлом csv для доступа к каждой записи?


person Muky    schedule 07.07.2014    source источник


Ответы (1)


Узел 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];
person hardillb    schedule 29.08.2014
comment
спасибо @hardliib! Относится ли это также к массиву CSV-объектов, вложенных в массив? Я думал, что это то, что ожидал узел csv, но, похоже, ему не нравится массив объектов csv, поэтому я думаю, что мне нужно разделить их! - person GPP; 11.01.2019