MongoDB - 保存与更新文档中的特定字段

时间:2015-11-14 01:46:31

标签: javascript mongodb mean-stack mean

使用MEAN堆栈,我试图让管理员帐户更新其他用户的信息,在这种情况下,是他们在网站上的标题/角色。我遇到的问题是编辑用户时唯一可用的功能是save()函数。可能是我可以使用更新功能,如果是这种情况请告诉我,但它看起来不可能:

enter image description here

问题出现了,当用户被保存时,它会创建一个新文档,并将用户的密码和盐覆盖到某个值。我希望能够拨打"更新"功能只会更新一个字段,但我无法弄清楚如何。有没有办法用保存功能来做到这一点?

相关守则:

exports.updateUserRoles = function(req, res) { 
    var currUser = req.body;
    User.findById(currUser._id, function(err, user) {
    //user.roles = currUser.roles;
    user.save( { _id : '56467b28ba57d8d890242cfa', roles : 'admin' } );

    //THE BELOW WAS A PREVIOUS ATTEMPT

    /*user.save( function(err) {
        if (err) {
            return res.status(400).send({
                message: errorHandler.getErrorMessage(err)
            });
        } else {
            res.jsonp(user);
            console.log('test2');
        }
    });*/
});
};

尝试其他似乎非常接近的东西,但仍然不太完美。

这是我正在运行的:

exports.updateUserRoles = function(req, res) { 
    var currUser = req.body;
    User.findById(currUser._id, function(err, user) {
        //user.roles = currUser.roles;
        //user.roles.set(0, 'admin');
        console.log('test');
        user.update(
            { _id: '56467b28ba57d8d890242cfa' },
            {
              $set: {
                roles: 'admin',
              },
            }
        );
        console.log('test2');
    });
};

在点击user.update行时,我们在局部变量中有用户,见:

enter image description here

user.update进入这个Document.prototype.update函数,见:

enter image description here

args看起来正在建设中,我们正在瞄准这些行动以及行动是什么,见过:

enter image description here

然而在跑步之后,似乎没有任何改变。我非常难过。

1 个答案:

答案 0 :(得分:0)

对于更新mongodb中的各个字段,您可以使用不同原子运算符的更新,如$ set,$ unset,$ push等。 例如:

var updateUserRoles = function(db, callback) {
   db.collection('users').updateOne(
      { "_id", : "user_id", },
      { $set: { "password": "new_password" } }, 
      function(err, results) {
         console.log(results);
         callback();
      }
   );
};