fix: #8320, dont load moderators separately for each category

v1.18.x
Barış Soner Uşaklı 5 years ago
parent 11bb6abb51
commit 0a31e3e6b0

@ -1,8 +1,11 @@
'use strict';
const _ = require('lodash');
const groups = require('../../groups');
const categories = require('../../categories');
const privileges = require('../../privileges');
const user = require('../../user');
const AdminsMods = module.exports;
@ -23,9 +26,12 @@ AdminsMods.get = async function (req, res) {
async function getModeratorsOfCategories(uid) {
const categoryData = await categories.buildForSelect(uid, 'find', ['depth']);
const moderators = await Promise.all(categoryData.map(c => categories.getModerators(c.cid)));
const moderatorUids = await categories.getModeratorUids(categoryData.map(c => c.cid));
const uids = _.uniq(_.flatten(moderatorUids));
const moderatorData = await user.getUsersFields(uids, ['uid', 'username', 'userslug', 'picture']);
const moderatorMap = _.zipObject(uids, moderatorData);
categoryData.forEach((c, index) => {
c.moderators = moderators[index];
c.moderators = moderatorUids[index].map(uid => moderatorMap[uid]);
});
return categoryData;
}

Loading…
Cancel
Save