流星角色不按预期工作,它返回假

问题描述:

我们正在使用流星[email protected]并添加alanning:roles管理角色。 下面我们用于应用角色的代码。流星角色不按预期工作,它返回假

Accounts.onCreateUser(function(options, user) { 
    console.log("on account create"); 
    Roles.addUsersToRoles(user._id,'admin') 
    console.log(Roles.userIsInRole(Meteor.userId(),'admin')); 
    return user; 
}); 

Roles.userIsInRole(Meteor.userId(),'admin') return false 

帮助我们怎么了。

+0

这可能只是一个计时问题 - 请记住,对addUsersToRoles的调用会对数据库进行更新,这不是即时的。如果您手动检查数据库,是否已完成添加角色的工作? – Mikkel

+0

@迈克金 - 我一直试图从控制台检查Roles.userIsInRole(Meteor.userId(),'admin')的状态,但它alwase返回false,我也检查角色订阅并返回所有可用角色 – jayesh

alanning-roles,您不需要将其包含到Accounts.onCreateUser中。

插入新文档后,您只需要使用Roles.addUserToRoles()。像这样:根据他们的README.md

const id = Accounts.createUser({ email: user.email, password: "apple1", profile: { name: user.name } }); Roles.addUsersToRoles(id,'whateverRole')

注意,Roles.addUsersToRoles调用需求来Accounts.createUser或Accounts.onCreate否则角色包不会被后能够找到用户记录(因为它还没有被创建)。

+0

你有没有使用[email protected]进行测试 – jayesh

+0

是的,它的工作正常。 – ickyrr

+0

感谢您的发现我发现问题流星帐户开始使用登录和注册与包帐户密码,但角色必须要求帐户基础包。 – jayesh