Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
meteor角色。userIsInRole()始终返回false_Meteor_Roles - Fatal编程技术网

meteor角色。userIsInRole()始终返回false

meteor角色。userIsInRole()始终返回false,meteor,roles,Meteor,Roles,我的第一个按钮创建了一个简单的用户,如下所示: 'click .insertBtn': function() { var email = document.getElementById('email').value; var pass = document.getElementById('password').value; Accounts.createUser( { email: email,

我的第一个按钮创建了一个简单的用户,如下所示:

'click .insertBtn': function()
    {
        var email = document.getElementById('email').value;
        var pass = document.getElementById('password').value;

        Accounts.createUser(
        {
            email: email,
            password: pass,
            profile: { name: 'test' }
        }); 

        Roles.addUsersToRoles([this._id], ['admin']);
    }
此用户被分配了一个“管理员”角色。然后,当我登录时,我有一个按钮来检查我是否是管理员:

'click .checkRole': function()
    {
        console.log(Roles.userIsInRole(Meteor.userId(), 'admin'));
    }
但是它总是返回false,那么问题是什么呢


用户id和角色id不同,是不是应该是这样?

用户可能没有成功添加到角色中。问题是,您确实在客户端使用了这一行代码(因为这样一来,任何人都会将其输入到自己并成为管理员):

您必须在服务器上执行此过程,可能是在项目服务器端的回调中


或者,您可以连接到meteor的mongodb,并在
users
集合中的用户文档中添加一个
roles:['admin']
字段,如果这是一次性的。如果您正在使用roles.addUsersToRoles([this.\u id],'admin']);在客户端上,它将不起作用。您必须从客户端使用Meteor.call方法在服务器上添加角色。如果成功,您将看到角色数组添加到该用户Id的用户集合中
Roles.addUsersToRoles([this._id], ['admin']);