MEANjs - 使用Angular / Express用户资源API的问题

时间:2015-11-03 23:53:45

标签: angularjs express meanjs

我正在寻找帮助,了解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%确定在调用函数后如何确切地说出发生了什么。

有人有什么想法吗?我可以提供可能需要的更多代码。

0 个答案:

没有答案