当我尝试更改猫鼬查询返回的数据的任何部分时,它均无效。
昨天,我尝试_.clone()使用各种s,使用临时存储变量等来解决大约2个小时的问题。最后,就在我发疯的时候,我找到了解决方案。因此,我认为将来有人(保存!)可能会出现保存问题。
_.clone()
Survey.findById(req.params.id, 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; //has no effect if(++counter == len) { res.send(data); } }); }); });
对于需要普通JS对象而不是完整模型实例的情况,可以lean()在查询链上调用,如下所示:
lean()
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); } }); }); });
这种方式data已经是一个普通的JS对象,您可以根据需要对其进行操作。
data