我有一个带有以下灯具代码的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
})
}
}
在启动项目时,所有帐户都已成功创建,但没有任何帐户具有角色字段。我做错了什么?
答案 0 :(得分:1)
你做错了是你将选项传递给它不被它接受的函数。 createUser options
仅接受username
,email
,password
和profile
。你应该研究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
的所有内容。希望有所帮助。