optimize getUserGroups to work with multiple user ids

This commit is contained in:
barisusakli
2014-08-09 02:07:03 -04:00
parent 5b681678b1
commit b8279dc737
2 changed files with 38 additions and 29 deletions

View File

@@ -438,7 +438,7 @@
});
};
Groups.getUserGroups = function(uid, callback) {
Groups.getUserGroups = function(uids, callback) {
var ignoredGroups = ['registered-users'];
db.getSetMembers('groups', function(err, groupNames) {
@@ -466,19 +466,22 @@
return 'group:' + group.name + ':members';
});
db.isMemberOfSets(groupSets, uid, function(err, isMembers) {
if (err) {
return callback(err);
}
for(var i=isMembers.length - 1; i>=0; --i) {
if (!isMembers[i]) {
groupData.splice(i, 1);
async.map(uids, function(uid, next) {
db.isMemberOfSets(groupSets, uid, function(err, isMembers) {
if (err) {
return next(err);
}
}
callback(null, groupData);
});
var memberOf = [];
isMembers.forEach(function(isMember, index) {
if (isMember) {
memberOf.push(groupData[index]);
}
});
next(null, memberOf);
});
}, callback);
});
});
};