【发布时间】:2015-10-10 15:22:11
【问题描述】:
我在理解 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 没有其他属性。我错过了什么?
我想我是在以某种方式创建局部变量而不是属性,但为什么不将其推送到结果数组?
【问题讨论】:
-
你需要提供一个实际演示问题的测试用例——sscce.org——你正在操纵很多变量(这可能可以简化),但没有向我们展示它们是如何定义的,并且您声称
result中的con的价值是什么,而没有向我们展示您是如何确定的。 -
请编写con的完整json或对象结构
-
这里似乎也没有任何 JSON。 benalman.com/news/2010/03/theres-no-such-thing-as-a-json
-
从 MongoDB 读取的对象应该处于冻结状态。您可能无法对其进行变异。
-
@TaoP.R.没错!非常感谢!感谢您的评论,我发现了这个问题:Why can't you modify the data returned by a Mongoose Query 并使用
lean()成功了。您可以发布答案以便我接受吗?
标签: javascript mongodb mongoose