在固定装置中设置 Meteor 用户角色不起作用
Setting Meteor user roles in fixtures not working
我有一个 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
})
}
}
启动我的项目时,所有帐户都已成功创建,但其中 none 个帐户具有角色字段。我做错了什么?
你做错的是你将选项传递给了它不接受的函数。 createUser options
只接受 username
、email
、password
和 profile
。你应该研究docs,流星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();
调用或 fiddle 和 Accounts.onCreateUser
回调直接设置角色,这非常适合处理您传递给 createUser
的所有内容。希望对您有所帮助。
我有一个 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
})
}
}
启动我的项目时,所有帐户都已成功创建,但其中 none 个帐户具有角色字段。我做错了什么?
你做错的是你将选项传递给了它不接受的函数。 createUser options
只接受 username
、email
、password
和 profile
。你应该研究docs,流星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();
调用或 fiddle 和 Accounts.onCreateUser
回调直接设置角色,这非常适合处理您传递给 createUser
的所有内容。希望对您有所帮助。