我正在寻找帮助,了解MEANjs中使用的一些API部分,尤其是用户资源。基本上我已经在MEAN应用程序上工作了一段时间,使用他们的基本版本的网站并使用yeoman meanjs生成器,并且我正在尝试扩展他们拥有的东西。我正在努力实现的是管理员能够更改用户的角色属性,因此可以从用户"更改用户"到"管理员。"
我会尝试发布我认为相关的所有代码以及我对它的作用的理解,并希望找到解决方案。
在users.client.controller中,按下按钮调用此函数,$ scope.user是我们尝试创建管理员的用户:
$scope.test = function(){
$scope.user.roles[0]= 'admin';
var currUser = $scope.user;
Users.updateUserRoles(currUser);
};
因此它使它们成为管理员,将其复制到另一个变量,并调用用户资源的函数updateUserRoles,它位于:
exports.updateUserRoles = function(req, res) {
var currUser = req.body;
User.findById(currUser._id, function(err, user) {
user.roles = currUser.roles;
user.save();
});
};
因此,该功能在用户资源中找到与传递的用户具有相同_id的用户,并将该用户的角色设置为传递的用户,然后保存该用户。这是我最不稳定的地方,用户的保存调用应该在资源中调用POST方法,我相信,这就是:
angular.module('users').factory('Users', ['$resource',
function($resource) {
return $resource('users/:userId', {userId: '@_id'}, {
updateUserRoles: {
method: 'POST',
},
update: {
method: 'PUT',
}
});
}
]);
此处还有包含所有选项的users.server.routes,其中一些甚至尚未实现:
app.route('/users/:userId').get(users.read)
.put(users.requiresLogin, users.update)
.delete(users.requiresLogin);
.post(users.updateUserRoles);
毕竟,我遇到的主要问题是用户的角色确实已改为" admin,"但是当所有内容都完成后,用户的密码就会被更改。我在MongoLab上运行数据库,在更改了角色后,您可以非常轻松地看到密码哈希已被更改,并且尝试登录已更改其角色的帐户不成功。我本来希望在更多的函数中添加断点,但是在chrome中你只能查看某些目录中的js文件,所以我不能100%确定在调用函数后如何确切地说出发生了什么。
有人有什么想法吗?我可以提供可能需要的更多代码。