如何在 Meteor 创建用户时获取用户 ID?

How to get user ID during user creation in Meteor?

我正在使用 Meteor 启动功能在服务器上创建默认用户。我想创建一个用户并在启动时验证 his/her 电子邮件(我假设您只能在创建帐户后执行此操作)。

这是我的:

Meteor.startup(function() {
  // Creates default accounts if there no user accounts
  if(!Meteor.users.find().count()) {
    //  Set default account details here
    var barry = {
      username: 'barrydoyle18',
      password: '123456',
      email: 'myemail@gmail.com',
      profile: {
        firstName: 'Barry',
        lastName: 'Doyle'
      },
      roles: ['webmaster', 'admin']
    };

    //  Create default account details here
    Accounts.createUser(barry);

    Meteor.users.update(<user Id goes here>, {$set: {"emails.0.verified": true}});
  }
});

正如我所说,我假设必须先创建用户,然后再将已验证标志设置为真(如果此声明为假,请提供在创建用户时使标志为真的解决方案)。

为了将电子邮件验证标志设置为真,我知道我可以在创建后使用 Meteor.users.update(userId, {$set: {"emails.0.verified": true}}); 更新用户。

我的问题是,我不知道如何获取新创建用户的用户 ID,我该怎么做?

您应该能够访问从 Accounts.createUser() 函数返回的用户 ID:

var userId = Accounts.createUser(barry);
Meteor.users.update(userId, {
    $set: { "emails.0.verified": true}
});

或者,您可以通过 Accounts.onCreateUser() 函数访问新创建的用户:

var barry = {
  username: 'barrydoyle18',
  password: '123456',
  email: 'myemail@gmail.com',
  profile: {
    firstName: 'Barry',
    lastName: 'Doyle'
  },
  isDefault: true, //Add this field to notify the onCreateUser callback that this is default
  roles: ['webmaster', 'admin']
};

Accounts.onCreateUser(function(options, user) {
    if (user.isDefault) {
        Meteor.users.update(user._id, {
            $set: { "emails.0.verified": true}
        });
    }
});