From 0a31e3e6b0d0025684ff4efec455aba90752635f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 22 May 2020 15:03:51 -0400 Subject: [PATCH] fix: #8320, dont load moderators separately for each category --- src/controllers/admin/admins-mods.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/controllers/admin/admins-mods.js b/src/controllers/admin/admins-mods.js index e21ceeda05..aae6fa974d 100644 --- a/src/controllers/admin/admins-mods.js +++ b/src/controllers/admin/admins-mods.js @@ -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; }