在灯具中设置Meteor用户角色不起作用

时间:2017-04-10 06:38:00

标签: meteor meteor-accounts user-roles

我有一个带有以下灯具代码的Meteor应用程序:

/imports/startup/server/fixtures.js

import { Meteor } from 'meteor/meteor'
import { Accounts } from 'meteor/accounts-base'

if(Meteor.users.find().count === 0) {
    const users = [
        {username: "admin", email: "admin@testing.demo", profile: { name: "Admin" }, roles: ["admin"]},
        {username: "school", email: "school@testing.demo", profile: { name: "School Name" }, roles: ["school"]},
        {username: "teacher", email: "teacher@testing.demo", profile: { name: "Teacher" }, roles:["teacher"]}
    ]

    for(let user of users) {
        Accounts.createUser({
            username: user.username,
            email: user.email,
            password: "123456",
            profile: {
                name: user.profile.name,
            },
            roles: user.roles
        })
    }
}

在启动项目时,所有帐户都已成功创建,但没有任何帐户具有角色字段。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你做错了是你将选项传递给它不被它接受的函数。 createUser options仅接受usernameemailpasswordprofile。你应该研究docs,meteors API有很好的记录。

现在,要设置用户角色,您有几个选项,其中一个将使用新创建的用户的_id,由createUser返回,然后将角色设置为这样:

const userId = Accounts.createUser({
        username: user.username,
        email: user.email,
        password: "123456",
        profile: {
            name: user.profile.name,
        });
Roles.addUsersToRoles(userId, user.roles)

假设这是服务器端代码。在客户端,这不会起作用。您还可以使用Meteor.users.update();调用直接设置角色,或者使用Accounts.onCreateUser回调来调整角色,这非常适合处理传递给createUser的所有内容。希望有所帮助。