流星:在创建帐户上添加字段

Meteor: Adding Fields on createAccount

本文关键字:添加 字段 创建 流星      更新时间:2023-09-26

我正在尝试使用流星角色包:https://github.com/alanning/meteor-roles显然在用户模型中创建一个新字段。

创建

用户没有问题,但我尝试定义的"角色"字段未创建。我也可以在其中添加"个人资料"和详细信息等内容。但由于某种原因,我无法制作角色字段。这是我的表格:

Template.signup.events({
 'submit #signup-form' : function(e, t) {
   e.preventDefault();
   var roles = ['admin'],
       email = t.find('#email').value,
       password = t.find('#password').value;
   Accounts.createUser({email: email, password : password, roles: roles}, function(err){
       if (err) {
         alert("User Not Added")
       } else {
         console.log("User Added.")
       }
   });
 }
});

最终我需要将其发布给客户端,但现在我只想让该字段显示在 MongoDb 中,但事实并非如此。

3件事:

  1. 我觉得上面的代码应该可以工作,但我显然错过了一些东西
  2. 在包文档中,它提到了我Roles.addUsersToRoles试过但没有运气
  3. 或者,在创建记录后,我是否需要更新记录?

我确实进入了数据库并手动添加了字段和相关字符串以更新它(使用 $set(,它起作用了。但从形式本身来看,没有运气。

任何指示将不胜感激。谢谢。

Accounts.createUser函数只允许您通过 profile 选项添加任意用户属性,这是它们最终存储在 mongo 中的位置。 这就是为什么流星忽略了你Accounts.createUser电话的roles: roles部分。

确实,meteor-roles包将分配给用户的角色列表直接存储在 users 集合中,但这几乎只是一个实现细节,您可能最好坚持使用 meteor-roles 提供的用于将用户添加到角色的 API:

Roles.addUsersToRoles(<userId>,[<list of roles>])

传递给Roles.addUsersToRolesuserIdAccounts.createUser在服务器上调用时返回的值,这可能是您想要执行此操作的地方,因为这感觉更安全。

Accounts.createUser函数只接受usernameemailpasswordprofile作为用户对象的参数。请参阅此处的文档。因此,要将另一个字段添加到新的用户对象,您需要在第二步中添加它:

var uid = Accounts.createUser({email: email, password: password});
Meteor.users.update(uid, {$set: {roles: roles}});