Why can't you modify the data returned by a Mongoose Query (ex: findById)

前端 未结 2 1080
青春惊慌失措
青春惊慌失措 2020-11-22 06:51

When I try to change any part of the data returned by a Mongoose Query it has no effect.

I was trying to figure this out for about 2 hours yesterday, with all kinds

2条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-22 07:21

    For cases like this where you want a plain JS object instead of a full model instance, you can call lean() on the query chain like so:

    Survey.findById(req.params.id).lean().exec(function(err, data){
        var len = data.survey_questions.length;
        var counter = 0;
    
        _.each(data.survey_questions, function(sq){
            Question.findById(sq.question, function(err, q){
                sq.question = q;
    
                if(++counter == len) {
                    res.send(data);
                }
            });
        });
    });
    

    This way data is already a plain JS object you can manipulate as you need to.

提交回复
热议问题