From e76e545e6abeccb7416020642eaf1ef76d98e5f4 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 31 Mar 2014 19:01:08 -0600 Subject: [PATCH] fix(challenges): temporarily remove $elemMatch on challenge/user/progress, see #2947 --- src/controllers/challenges.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/controllers/challenges.js b/src/controllers/challenges.js index 485928e5f8..9545f4adae 100644 --- a/src/controllers/challenges.js +++ b/src/controllers/challenges.js @@ -105,12 +105,20 @@ api.csv = function(req, res, next) { api.getMember = function(req, res, next) { var cid = req.params.cid, uid = req.params.uid; - var elemMatch = {$elemMatch:{'challenge.id':cid}}; User.findById(uid) - .select({'profile.name':1, habits:elemMatch, dailys:elemMatch, todos:elemMatch, rewards:elemMatch}) + .select('profile.name habits dailys todos rewards') .exec(function(err, member){ if(err) return next(err); if (!member) return res.json(404, {err: 'Member '+uid+' for challenge '+cid+' not found'}); + + // Prune un-related tasks. See http://goo.gl/9fnwei + // See http://stackoverflow.com/a/18546277/362790 for fix + _.each(['habits','dailys','todos', 'rewards'], function(type){ + member[type] = _.filter(member[type], function(task){ + return task.challenge && task.challenge.id && task.challenge.id == cid; + }); + }); + res.json(member); }) }