diff --git a/src/database/mongo/hash.js b/src/database/mongo/hash.js index 78b2e9a61c..a03d14b463 100644 --- a/src/database/mongo/hash.js +++ b/src/database/mongo/hash.js @@ -1,5 +1,7 @@ "use strict"; +var winston = require('winston'); + module.exports = function(db, module) { var helpers = module.helpers.mongo; @@ -23,6 +25,7 @@ module.exports = function(db, module) { }; module.getObjects = function(keys, callback) { + helpers.checkKeys(keys); db.collection('objects').find({_key: {$in: keys}}, {_id: 0}).toArray(function(err, data) { if(err) { return callback(err); @@ -53,6 +56,7 @@ module.exports = function(db, module) { }; module.getObjectsFields = function(keys, fields, callback) { + helpers.checkKeys(keys); var _fields = { _id: 0, _key: 1 diff --git a/src/database/mongo/helpers.js b/src/database/mongo/helpers.js index 689a34bbf0..4a20eed2df 100644 --- a/src/database/mongo/helpers.js +++ b/src/database/mongo/helpers.js @@ -1,6 +1,7 @@ "use strict"; -var helpers = {}; +var helpers = {}, + winston = require('winston'); helpers.toMap = function(data) { var map = {}; @@ -33,4 +34,16 @@ helpers.valueToString = function(value) { helpers.noop = function() {}; +helpers.checkKeys = function(keys) { + if (!Array.isArray(keys)) { + var e = new Error('invalid keys'); + winston.warn('[INVALID_KEYS] ', e.stack); + return; + } + if (keys.length >= 50) { + var e = new Error('too many keys'); + winston.warn('[TOO_MANY_KEYS] ' + keys.length + ' ' + keys[0] + ' ' + keys[keys.length - 1] + '\n', e.stack); + } +} + module.exports = helpers; \ No newline at end of file