首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoose更新MongoDB中的字段不起作用

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

Stack Overflow用户
提问于 2011-11-22 05:27:59
回答 2查看 12.9K关注 0票数 6

我有这个代码

代码语言:javascript
复制
var UserSchema = new Schema({
    Username: {type: String, index: true},
    Password: String,
    Email: String,
    Points: {type: Number, default: 0}
});

..。

代码语言:javascript
复制
    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包含一个值,但我的用户仍然是零点。控制台打印“更新成功”。

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

马西亚尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-22 09:46:13

看起来你在做一些不规范的事情:

如果您只想加载一个用户,请使用findOne而不是find

  • 应调用Model.update来更新您尚未添加的记录loaded

  • $inc正在添加oldPoints,因此新值将为2* newPoints

  • You + Username

使用oldPoints而不是oldPoint作为条件查询

我会将代码重写为如下所示:

代码语言:javascript
复制
User.findOne({Username: name}, function(err, user){
  if (err) { return next(err); }
  user.Points += points;
  user.save(function(err) {
    if (err) { return next(err); }
  });
});
票数 11
EN

Stack Overflow用户

发布于 2016-08-23 08:33:37

关注我的代码员

代码语言:javascript
复制
 User.update({ username: "faibaa" },
    { $inc: { point: 200000 } }, function(err,data){
        return res.send(data);
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8218770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档