2016-01-21 3 views
4

Я создаю пользователей по умолчанию на сервере с функцией запуска Meteor. Я хочу создать пользователя, а также проверить его/ее электронную почту при запуске (я предполагаю, что вы можете сделать это только после создания учетной записи).Как получить идентификатор пользователя во время создания пользователя в Meteor?

Вот что у меня есть:

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: '[email protected]', 
     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}}); 
    } 
}); 

Как я уже сказал, я полагаю, что пользователь должен быть создан первым перед установкой проверенного флаг истинного (если это утверждение неверно, пожалуйста, покажите решение сделать флаг true при создании пользователя).

Для того, чтобы установить флаг проверки подлинности электронной почты как истинный, я знаю, что я могу обновить пользователя после создания, используя Meteor.users.update(userId, {$set: {"emails.0.verified": true}});.

Моя проблема заключается в том, что я не знаю, как получить идентификатор пользователя моего вновь созданного пользователя, как мне это сделать?

ответ

6

Вы должны быть в состоянии получить доступ к идентификатор пользователя, который возвращается из функции Accounts.createUser():

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

В качестве альтернативы вы можете получать доступ вновь созданных пользователей с помощью функции Accounts.onCreateUser():

var barry = { 
    username: 'barrydoyle18', 
    password: '123456', 
    email: '[email protected]', 
    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} 
     }); 
    } 
}); 
+0

Альтернативный вариант выполняется, но проверенный флаг по-прежнему является ложным. Должен ли я запускать функцию 'onCreateUser' до или после функции' createUsers'? В настоящее время я запускаю его после. –

+1

Второе решение - это просто регистрация обратного вызова при создании учетных записей. Убедитесь, что он работает как ожидалось, разместив там console.log(). Код внутри этого обратного вызова должен запускаться всякий раз, когда создается новая учетная запись, а не только в этом отдельном экземпляре. Что касается первого решения, я внесла поправки, чтобы он не включал обратный вызов. –

+1

Ваше новое первое решение сделало трюк! Спасибо за ваше время :) –

 Смежные вопросы

  • Нет связанных вопросов^_^