optimize queries

v1.18.x
barisusakli 11 years ago
parent 421d091828
commit 779b2a8d73

@ -439,15 +439,13 @@
};
Groups.getUserGroups = function(uids, callback) {
var ignoredGroups = ['registered-users'];
db.getSetMembers('groups', function(err, groupNames) {
if (err) {
return callback(err);
}
var groupKeys = groupNames.filter(function(groupName) {
return ignoredGroups.indexOf(groupName) === -1;
return groupName !== 'registered-users' && groupName.indexOf(':privileges:') === -1;
}).map(function(groupName) {
return 'group:' + groupName;
});

@ -404,15 +404,25 @@ var async = require('async'),
var tids = posts.map(function(post) {
return post.tid;
}).filter(function(tid, index, array) {
return array.indexOf(tid) === index;
});
topics.getTopicsFields(tids, ['cid'], function(err, topics) {
if (err) {
return callback(err);
}
var cids = topics.map(function(topic) {
return topic.cid;
var map = {};
topics.forEach(function(topic) {
if (topic) {
map[topic.tid] = topic.cid;
}
});
var cids = posts.map(function(post) {
return map[post.tid];
})
callback(null, cids);
});
});

@ -348,7 +348,7 @@ var async = require('async'),
return callback(err);
}
var postKeys = pids.map(function(pid) {
var postKeys = pids.filter(Boolean).map(function(pid) {
return 'post:' + pid;
});
@ -379,14 +379,19 @@ var async = require('async'),
results.users.forEach(function(user) {
users[user.uid] = user;
});
var tidToPost = {};
postData.forEach(function(post, index) {
post.user = users[post.uid];
post.index = results.indices[index] + 1;
post.timestamp = utils.toISOString(post.timestamp);
tidToPost[post.tid] = post;
});
var teasers = tids.map(function(tid) {
return tidToPost[tid];
});
callback(null, postData);
callback(null, teasers);
});
});
});

Loading…
Cancel
Save