mongodb - mongoose 更新 MongoDB 中的字段不起作用

我有这个代码

var UserSchema = new Schema({
    Username: {type: String, index: true},
    Password: String,
    Email: String,
    Points: {type: Number, default: 0}
});

[...]

    var User = db.model('User');
   /*
    * Function to save the points in the user's account
    */
    function savePoints(name, points){
        if(name != "unregistered user"){
        User.find({Username: name}, function(err, users){

            var oldPoints = users[0].Points;
            var newPoints = oldPoints + points;

            User.update({name: name}, { $inc: {Points: newPoints}}, function(err){
                if(err){
                    console.log("some error happened when update");
                }
                else{
                    console.log("update successfull! with name = " + name);
                    User.find({Username: name}, function(err, users) { 
                        console.log("updated : " + users[0].Points);
                    });
                }
            });

        });
    }
}

savePoints("Masiar", 666);

我想通过以下方式更新我的用户(通过查找用户名) 更新他/她的观点。我确定 oldPoints 和 points 包含一个 值(value),但我的用户仍然保持在零点。控制台打印 “更新成功”。

我做错了什么?抱歉愚蠢/菜鸟问题。

马夏尔

最佳答案

您似乎在做一些不标准的事情:

  • 如果您只想加载一个用户,请使用 findOne 而不是 find
  • 应该调用Model.update来更新你没有加载的记录
  • $inc 正在添加 oldPoints,因此新值将是 2*oldPoints + newPoints
  • 您使用 name 作为条件查询,而不是 Username

我会把代码改写成这样:

User.findOne({Username: name}, function(err, user){
  if (err) { return next(err); }
  user.Points += points;
  user.save(function(err) {
    if (err) { return next(err); }
  });
});

https://stackoverflow.com/questions/8218770/

相关文章:

javascript - MongoDB/ Mongoose : MarkModified a ne

mongodb - MongoError : The $subtract accumulator i

mongodb - 我可以/应该在 Mongoose 中索引嵌入的文档吗?

java - 哪个是 mongodb 访问的最佳 java 驱动程序?

mongodb - 当数据库大小大于 RAM 时,MongoDB 可以工作吗?

ruby-on-rails-3 - 使用 MongoID 在 Rails 中进行标记的良好解决方案

java - 如何使用 $ne 运算符查询 mongodb?

arrays - 如何遍历 Reactjs 中的表格行和单元格

c# - 如何通过使用 MongoDB C# 驱动程序调用 obj.ToBsonDocument()

mongodb - 处理 100+ 百万条记录的最佳 NoSQL 方法