mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Merge pull request #2734 from node-red-hitachi/csv-node-mapi
Messaging API support in CSV node
This commit is contained in:
commit
41d12c433e
@ -55,7 +55,7 @@ module.exports = function(RED) {
|
||||
node.template = clean(node.template);
|
||||
node.hdrSent = false;
|
||||
|
||||
this.on("input", function(msg) {
|
||||
this.on("input", function(msg, send, done) {
|
||||
if (msg.hasOwnProperty("reset")) {
|
||||
node.hdrSent = false;
|
||||
}
|
||||
@ -145,9 +145,10 @@ module.exports = function(RED) {
|
||||
}
|
||||
msg.payload = ou;
|
||||
msg.columns = node.template.join(',');
|
||||
if (msg.payload !== '') { node.send(msg); }
|
||||
if (msg.payload !== '') { send(msg); }
|
||||
done();
|
||||
}
|
||||
catch(e) { node.error(e,msg); }
|
||||
catch(e) { done(e); }
|
||||
}
|
||||
else if (typeof msg.payload == "string") { // convert CSV string to object
|
||||
try {
|
||||
@ -256,13 +257,13 @@ module.exports = function(RED) {
|
||||
msg.payload = node.store;
|
||||
msg.columns = node.template.filter(val => val).join(',');
|
||||
delete msg.parts;
|
||||
node.send(msg);
|
||||
send(msg);
|
||||
node.store = [];
|
||||
}
|
||||
}
|
||||
else {
|
||||
msg.columns = node.template.filter(val => val).join(',');
|
||||
node.send(msg); // finally send the array
|
||||
send(msg); // finally send the array
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -286,19 +287,21 @@ module.exports = function(RED) {
|
||||
newMessage.parts.count -= 1;
|
||||
}
|
||||
}
|
||||
node.send(newMessage);
|
||||
send(newMessage);
|
||||
}
|
||||
}
|
||||
node.linecount = 0;
|
||||
done();
|
||||
}
|
||||
catch(e) { node.error(e,msg); }
|
||||
catch(e) { done(e); }
|
||||
}
|
||||
else { node.warn(RED._("csv.errors.csv_js")); }
|
||||
else { node.warn(RED._("csv.errors.csv_js")); done(); }
|
||||
}
|
||||
else {
|
||||
if (!msg.hasOwnProperty("reset")) {
|
||||
node.send(msg); // If no payload and not reset - just pass it on.
|
||||
send(msg); // If no payload and not reset - just pass it on.
|
||||
}
|
||||
done();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -773,4 +773,43 @@ describe('CSV node', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('should call done when message processing is completed', function(done) {
|
||||
const completeNode = require("nr-test-utils").require("@node-red/nodes/core/common/24-complete.js");
|
||||
const flow = [ { id:"n1", type:"csv", temp:"a,b,c,d", wires:[[]]},
|
||||
{ id:"c1", type:"complete", scope: ["n1"], uncaught:false, wires:[["h1"]]},
|
||||
{ id:"h1", type:"helper", wires:[[]]} ];
|
||||
helper.load([csvNode,completeNode], flow, function() {
|
||||
const n1 = helper.getNode("n1");
|
||||
const h1 = helper.getNode("h1");
|
||||
h1.on("input", function(msg) {
|
||||
try {
|
||||
msg.should.have.a.property('payload', "1,2,3,4");
|
||||
done();
|
||||
} catch (e) {
|
||||
done(e);
|
||||
}
|
||||
});
|
||||
n1.receive({payload:"1,2,3,4"});
|
||||
});
|
||||
});
|
||||
|
||||
it('should call done when input causes an error', function(done) {
|
||||
const completeNode = require("nr-test-utils").require("@node-red/nodes/core/common/24-complete.js");
|
||||
const flow = [ { id:"n1", type:"csv", temp:"a,b,c,d", wires:[[]]},
|
||||
{ id:"c1", type:"complete", scope: ["n1"], uncaught:false, wires:[["h1"]]},
|
||||
{ id:"h1", type:"helper", wires:[[]]} ];
|
||||
helper.load([csvNode,completeNode], flow, function() {
|
||||
const n1 = helper.getNode("n1");
|
||||
const h1 = helper.getNode("h1");
|
||||
h1.on("input", function(msg) {
|
||||
try {
|
||||
msg.should.have.a.property('payload', 1);
|
||||
done();
|
||||
} catch (e) {
|
||||
done(e);
|
||||
}
|
||||
});
|
||||
n1.receive({payload:1}); // neither object nor string
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user