参见英文答案 > How do you turn a Mongoose document into a plain object? 4个
我在理解JavaScript中的变量操作时遇到了问题.
以下代码:
UserScore.find(filter, function (err, userScores) {
var contests = [];
userScores.forEach(function(userScore)
{
contests.push(userScore.ContestId);
});
Contest.find({ '_id': { $in : contests } }, function(err, contestItems)
{
var result = [];
contestItems.forEach(function(con)
{
userScores.forEach(function(element) {
if(element.ContestId == con._id)
{
con.UserTeamName = element.TeamName;
con.UserPersonalScore = element.Score;
console.log(con);
console.log(con.UserPersonalScore);
result.push(con);
return;
}
});
});
res.status(200).json(result);
});
});
在没有添加两个属性的情况下打印“con”,并使用适当的值打印“con.UserPersonalScore”.当推送到结果时,con没有其他属性.我错过了什么?
我想我在某种程度上创建局部变量而不是属性,但为什么不将它推送到结果数组?
解决方法:
从Mongodb查询返回的对象处于冻结(不可变)状态
您的代码似乎与MongoDB交互.返回的对象实际上是Mongodb模型实例,而不是普通的javascript对象.您无法修改查询返回的对象.
将Mongodb文档转换为JSON对象
.toObject()
就可以了.它将冻结的MongoDB文档转换为JSON对象.