fix mysql array handling

This commit is contained in:
Dave Conway-Jones 2021-03-12 21:01:54 +00:00
parent 911348790c
commit 6095723308
No known key found for this signature in database
GPG Key ID: 88BA2B8A411BE9FF
2 changed files with 11 additions and 11 deletions

View File

@ -19,9 +19,8 @@ module.exports = function(RED) {
var node = this; var node = this;
function checkVer() { function checkVer() {
node.connection.query("SELECT version();", [], function(err, rows) { node.pool.query("SELECT version();", [], function(err, rows, fields) {
if (err) { if (err) {
node.connection.release();
node.error(err); node.error(err);
node.status({fill:"red",shape:"ring",text:"Bad Ping"}); node.status({fill:"red",shape:"ring",text:"Bad Ping"});
doConnect(); doConnect();
@ -84,13 +83,13 @@ module.exports = function(RED) {
} }
} }
this.on('close', function (done) { this.on('close', function(done) {
if (this.tick) { clearTimeout(this.tick); } if (this.tick) { clearTimeout(this.tick); }
if (this.check) { clearInterval(this.check); } if (this.check) { clearInterval(this.check); }
node.connected = false; node.connected = false;
node.connection.release(); node.connection.release();
node.emit("state"," "); node.emit("state"," ");
node.pool.end(function (err) { done(); }); node.pool.end(function(err) { done(); });
}); });
} }
RED.nodes.registerType("MySQLdatabase",MySQLNode, { RED.nodes.registerType("MySQLdatabase",MySQLNode, {
@ -130,17 +129,17 @@ module.exports = function(RED) {
if (Array.isArray(msg.payload)) { bind = msg.payload; } if (Array.isArray(msg.payload)) { bind = msg.payload; }
else if (typeof msg.payload === 'object' && msg.payload !== null) { else if (typeof msg.payload === 'object' && msg.payload !== null) {
bind=msg.payload; bind=msg.payload;
node.mydbConfig.connection.config.queryFormat = function (query, values) { node.mydbConfig.connection.config.queryFormat = function(query, values) {
if (!values){ if (!values) {
return query; return query;
} }
return query.replace(/\:(\w+)/g, function (txt, key) { return query.replace(/\:(\w+)/g, function(txt, key) {
if (values.hasOwnProperty(key)) { if (values.hasOwnProperty(key)) {
return this.escape(values[key]); return this.escape(values[key]);
} }
return txt; return txt;
}.bind(this)); }.bind(this));
}; };
} }
node.mydbConfig.connection.query(msg.topic, bind, function(err, rows) { node.mydbConfig.connection.query(msg.topic, bind, function(err, rows) {
if (err) { if (err) {
@ -149,7 +148,7 @@ module.exports = function(RED) {
node.error(err,msg); node.error(err,msg);
} }
else { else {
if (rows.constructor.name === "OkPacket") { if ( (rows.constructor.name === "OkPacket") || (rows.constructor.name === "Array")) {
msg.payload = JSON.parse(JSON.stringify(rows)); msg.payload = JSON.parse(JSON.stringify(rows));
} }
else { msg.payload = rows; } else { msg.payload = rows; }
@ -157,6 +156,7 @@ module.exports = function(RED) {
status = {fill:"green",shape:"dot",text:"OK"}; status = {fill:"green",shape:"dot",text:"OK"};
node.status(status); node.status(status);
} }
node.mydbConfig.connection.release();
}); });
} }
else { else {
@ -174,7 +174,7 @@ module.exports = function(RED) {
} }
}); });
node.on('close', function () { node.on('close', function() {
if (node.tout) { clearTimeout(node.tout); } if (node.tout) { clearTimeout(node.tout); }
node.mydbConfig.removeAllListeners(); node.mydbConfig.removeAllListeners();
node.status({}); node.status({});

View File

@ -1,6 +1,6 @@
{ {
"name": "node-red-node-mysql", "name": "node-red-node-mysql",
"version": "0.1.1", "version": "0.1.2",
"description": "A Node-RED node to read and write to a MySQL database", "description": "A Node-RED node to read and write to a MySQL database",
"dependencies": { "dependencies": {
"mysql": "^2.18.1" "mysql": "^2.18.1"