diff --git a/src/database/mongo/hash.js b/src/database/mongo/hash.js index aef54bf124..263ad79849 100644 --- a/src/database/mongo/hash.js +++ b/src/database/mongo/hash.js @@ -277,7 +277,7 @@ module.exports = function (db, module) { callback = callback || helpers.noop; value = parseInt(value, 10); if (!key || isNaN(value)) { - return callback(); + return callback(null, null); } var data = {}; diff --git a/src/database/redis/hash.js b/src/database/redis/hash.js index 1a9388f0a2..6f3c799027 100644 --- a/src/database/redis/hash.js +++ b/src/database/redis/hash.js @@ -117,14 +117,18 @@ module.exports = function (redisClient, module) { }; module.incrObjectField = function (key, field, callback) { - redisClient.hincrby(key, field, 1, callback); + module.incrObjectFieldBy(key, field, 1, callback); }; module.decrObjectField = function (key, field, callback) { - redisClient.hincrby(key, field, -1, callback); + module.incrObjectFieldBy(key, field, -1, callback); }; module.incrObjectFieldBy = function (key, field, value, callback) { + value = parseInt(value, 10); + if (!key || isNaN(value)) { + return callback(null, null); + } redisClient.hincrby(key, field, value, callback); }; }; diff --git a/test/database/hash.js b/test/database/hash.js index 3eb84c693b..cd64acba56 100644 --- a/test/database/hash.js +++ b/test/database/hash.js @@ -438,5 +438,17 @@ describe('Hash methods', function () { done(); }); }); + + it('should return null if value is NaN', function (done) { + db.incrObjectFieldBy('testObject15', 'lastonline', 'notanumber', function (err, newValue) { + assert.ifError(err); + assert.strictEqual(newValue, null); + db.isObjectField('testObject15', 'lastonline', function (err, isField) { + assert.ifError(err); + assert(!isField); + done(); + }); + }); + }); }); });