gpt4 book ai didi

node.js - 为什么不能修改 Mongoose 查询返回的数据(例如 : findById)

转载 作者:行者123 更新时间:2023-11-28 07:17:28 26 4
gpt4 key购买 nike

当我尝试更改 Mongoose 查询返回的数据的任何部分时,它没有任何效果。

昨天我花了大约 2 个小时试图解决这个问题,使用了各种 _.clone(),使用临时存储变量等。最后,就在我以为我要去的时候疯狂,我找到了解决方案。所以我想将来有人(fyuuuture!)可能会遇到保存问题。

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()在查询链上像这样:

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对象了,你可以根据需要进行操作。

关于node.js - 为什么不能修改 Mongoose 查询返回的数据(例如 : findById),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30695110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com