【发布时间】:2016-02-15 17:09:30
【问题描述】:
使用 MEAN 堆栈,我试图让管理员帐户更新另一个用户的信息,在这种情况下,他们在网站上的标题/角色。我遇到的问题是编辑用户时唯一可用的函数是 save() 函数。可能是我可以使用更新功能,如果是这种情况,请告诉我,但看起来不可能:
问题出现了,当用户被保存时,它会创建一个新文档,并将用户的密码和盐覆盖到某个值。我希望能够调用一个“更新”函数,它只会更新一个字段,但我不知道怎么做。有没有办法用保存功能做到这一点?
相关代码:
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 行后,我们在局部变量中有用户,可见:
user.update 进入这个 Document.prototype.update 函数,可见:
args 看起来是正确的,我们所针对的 _id 以及操作是什么,可见:
但是在运行之后,似乎什么都没有改变。我非常难过。
【问题讨论】:
标签: javascript mongodb mean-stack mean