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

View File

@ -1,6 +1,6 @@
{
"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",
"dependencies": {
"mysql": "^2.18.1"