javascript – 获取后向Mongoose文档添加新属性

参见英文答案 > 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对象.

上一篇:Satisfying memory ordering requirements between partial reads and non-snoop accesses


下一篇:javascript – Async – parallel()与函数动态数组