From d3956f9816e57457bdbb943b4ef6cd7d75ab497e Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 26 Sep 2014 11:30:09 +0100 Subject: [PATCH] Ensure valid mongo selector object --- nodes/core/storage/66-mongodb.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/nodes/core/storage/66-mongodb.js b/nodes/core/storage/66-mongodb.js index 7a990f19d..3a71407c6 100644 --- a/nodes/core/storage/66-mongodb.js +++ b/nodes/core/storage/66-mongodb.js @@ -42,6 +42,14 @@ module.exports = function(RED) { } }); + function ensureValidSelectorObject(selector) { + if (selector != null && (typeof selector != 'object' || Buffer.isBuffer(selector))) { + return {}; + } + return selector; + } + + function MongoOutNode(n) { RED.nodes.createNode(this,n); this.collection = n.collection; @@ -175,7 +183,8 @@ module.exports = function(RED) { } if (node.operation === "find") { msg.projection = msg.projection || {}; - coll.find(msg.payload,msg.projection).sort(msg.sort).limit(msg.limit).toArray(function(err, items) { + var selector = ensureValidSelectorObject(msg.payload); + coll.find(selector,msg.projection).sort(msg.sort).limit(msg.limit).toArray(function(err, items) { if (err) { node.error(err); } else { @@ -187,7 +196,8 @@ module.exports = function(RED) { } }); } else if (node.operation === "count") { - coll.count(msg.payload, function(err, count) { + var selector = ensureValidSelectorObject(msg.payload); + coll.count(selector, function(err, count) { if (err) { node.error(err); } else {