diff --git a/src/database/mongo/main.js b/src/database/mongo/main.js index 913696aa9c..469a9720d9 100644 --- a/src/database/mongo/main.js +++ b/src/database/mongo/main.js @@ -34,12 +34,20 @@ module.exports = function(db, module) { searchQuery.$text = {$search: data.content}; } - if (data.cid) { - searchQuery.cid = data.cid; + if (Array.isArray(data.cid) && data.cid.length) { + if (data.cid.length > 1) { + searchQuery.cid = {$in: data.cid.map(String)}; + } else { + searchQuery.cid = data.cid[0].toString(); + } } - if (data.uid) { - searchQuery.uid = data.uid; + if (Array.isArray(data.uid) && data.uid.length) { + if (data.uid.length > 1) { + searchQuery.uid = {$in: data.uid.map(String)}; + } else { + searchQuery.uid = data.uid[0].toString(); + } } db.collection('search').find(searchQuery, {limit: limit}).toArray(function(err, results) { diff --git a/src/search.js b/src/search.js index 257ce6f352..063ebfa142 100644 --- a/src/search.js +++ b/src/search.js @@ -414,11 +414,7 @@ function getChildrenCids(cids, uid, callback) { function getSearchUids(data, callback) { if (data.postedBy) { - if (Array.isArray(data.postedBy)) { - user.getUidsByUsernames(data.postedBy, callback); - } else { - user.getUidByUsername([data.postedBy], callback); - } + user.getUidsByUsernames(Array.isArray(data.postedBy) ? data.postedBy : [data.postedBy], callback); } else { callback(null, []); } diff --git a/src/user.js b/src/user.js index bd0eed4ef4..cb4492765a 100644 --- a/src/user.js +++ b/src/user.js @@ -335,7 +335,15 @@ var async = require('async'), }; User.getUidsByUsernames = function(usernames, callback) { - db.getObjectFields('username:uid', usernames, callback); + db.getObjectFields('username:uid', usernames, function(err, users) { + if (err) { + return callback(err); + } + var uids = usernames.map(function(username) { + return users[username]; + }); + callback(null, uids); + }); }; User.getUidByUserslug = function(userslug, callback) {