流星角色不按预期工作,它返回假
问题描述:
我们正在使用流星[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
帮助我们怎么了。
答
与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否则角色包不会被后能够找到用户记录(因为它还没有被创建)。
这可能只是一个计时问题 - 请记住,对addUsersToRoles的调用会对数据库进行更新,这不是即时的。如果您手动检查数据库,是否已完成添加角色的工作? – Mikkel
@迈克金 - 我一直试图从控制台检查Roles.userIsInRole(Meteor.userId(),'admin')的状态,但它alwase返回false,我也检查角色订阅并返回所有可用角色 – jayesh