From 92343eb2e1f265eaf8383ff1cc3f283752acbf32 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 14 Apr 2017 13:58:32 -0400 Subject: [PATCH] fix mongo setObject if key/value is empty string --- src/database/mongo/hash.js | 4 +++- src/database/redis/hash.js | 6 ++++++ test/database/hash.js | 11 +++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/database/mongo/hash.js b/src/database/mongo/hash.js index 57c72cdc91..997f22cfc0 100644 --- a/src/database/mongo/hash.js +++ b/src/database/mongo/hash.js @@ -8,7 +8,9 @@ module.exports = function (db, module) { if (!key || !data) { return callback(); } - + if (data.hasOwnProperty('')) { + delete data['']; + } db.collection('objects').update({ _key: key }, { $set: data }, { upsert: true, w: 1 }, function (err) { callback(err); }); diff --git a/src/database/redis/hash.js b/src/database/redis/hash.js index 61d83a93f6..9dcb005528 100644 --- a/src/database/redis/hash.js +++ b/src/database/redis/hash.js @@ -8,11 +8,17 @@ module.exports = function (redisClient, module) { if (!key || !data) { return callback(); } + + if (data.hasOwnProperty('')) { + delete data['']; + } + Object.keys(data).forEach(function (key) { if (data[key] === undefined) { delete data[key]; } }); + redisClient.hmset(key, data, function (err) { callback(err); }); diff --git a/test/database/hash.js b/test/database/hash.js index 4da340b960..d8583d3a6f 100644 --- a/test/database/hash.js +++ b/test/database/hash.js @@ -42,6 +42,17 @@ describe('Hash methods', function () { }); }); }); + + it('should not error if a key is empty string', function (done) { + db.setObject('emptyField', {'': '', b: 1}, function (err) { + assert.ifError(err); + db.getObject('emptyField', function (err, data) { + assert.ifError(err); + console.log(data); + done(); + }); + }); + }); }); describe('setObjectField()', function () {