mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-07-08 12:23:35 +02:00
optimize getTopicsByTids and getTeasers
This commit is contained in:
@@ -51,6 +51,10 @@ module.exports = function(db, module) {
|
||||
});
|
||||
};
|
||||
|
||||
module.getSetsMembers = function(keys, callback) {
|
||||
throw new Error('not-implemented');
|
||||
};
|
||||
|
||||
module.setCount = function(key, callback) {
|
||||
module.getListRange(key, 0, -1, function(err, set) {
|
||||
callback(err, set.length);
|
||||
|
||||
@@ -91,6 +91,24 @@ module.exports = function(db, module) {
|
||||
});
|
||||
};
|
||||
|
||||
module.getSetsMembers = function(keys, callback) {
|
||||
db.collection('objects').find({_key: {$in: keys}}, {_key: 1, members: 1}).toArray(function(err, data) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
var sets = {};
|
||||
data.forEach(function(set) {
|
||||
sets[set._key] = set.members || [];
|
||||
});
|
||||
|
||||
var returnData = new Array(keys.length);
|
||||
for(var i=0; i<keys.length; ++i) {
|
||||
returnData[i] = sets[keys[i]] || [];
|
||||
}
|
||||
callback(null, returnData);
|
||||
});
|
||||
};
|
||||
|
||||
module.setCount = function(key, callback) {
|
||||
db.collection('objects').findOne({_key:key}, function(err, data) {
|
||||
return callback(err, data ? data.members.length : 0);
|
||||
|
||||
@@ -54,6 +54,14 @@ module.exports = function(redisClient, module) {
|
||||
redisClient.smembers(key, callback);
|
||||
};
|
||||
|
||||
module.getSetsMembers = function(keys, callback) {
|
||||
var multi = redisClient.multi();
|
||||
for (var i=0; i<keys.length; ++i) {
|
||||
multi.smembers(keys[i]);
|
||||
}
|
||||
multi.exec(callback);
|
||||
};
|
||||
|
||||
module.setCount = function(key, callback) {
|
||||
redisClient.scard(key, callback);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user