From 4d88787ba005d968199ccf5445d4f931e3287933 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 2 Nov 2019 12:43:51 +0100 Subject: [PATCH] fix(challenge export): do not fetch users and tasks concurrently --- .../server/controllers/api-v3/challenges.js | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/website/server/controllers/api-v3/challenges.js b/website/server/controllers/api-v3/challenges.js index 236bf198c4..f2f2259115 100644 --- a/website/server/controllers/api-v3/challenges.js +++ b/website/server/controllers/api-v3/challenges.js @@ -591,21 +591,22 @@ api.exportChallengeCsv = { // computation on MongoDB but then iterated through all // results on the server so the perf difference isn't that big (hopefully) - const [members, tasks] = await Promise.all([ - User.find({ challenges: challengeId }) - .select(nameFields) - .sort({ _id: 1 }) - .lean() // so we don't involve mongoose - .exec(), + const members = await User + .find({ challenges: challengeId }) + .select(nameFields) + .sort({ _id: 1 }) + .lean() // so we don't involve mongoose + .exec(); - Tasks.Task.find({ + const tasks = Tasks.Task + .find({ 'challenge.id': challengeId, userId: { $exists: true }, - }).sort({ userId: 1, text: 1 }) - .select('userId type text value notes streak') - .lean() - .exec(), - ]); + }) + .sort({ userId: 1, text: 1 }) + .select('userId type text value notes streak') + .lean() // so we don't involve mongoose + .exec(); let resArray = members .map(member => [member._id, member.profile.name, member.auth.local.username]);