Accounts.createUser не сохраняет профиль

У меня есть следующий кусок кода в моем server/fixtures.js файл:

var userId = Accounts.createUser({
  username: "tester",
  email: "a@b.com",
  password: "foobar",
  profile: { name: "Max" }
});
var user = Meteor.users.findOne({_id: userId});
console.log(user.profile.name);

Теперь, когда я бегу meteor это журналы undefined, Что я делаю неправильно?

3 ответа

Решение

Я почти уверен, что у меня был определен колбэк Accounts.onCreateUser, который был ответственен за это. Виноват!

Я думаю, что вам нужно использовать публикации и подписки Meteors. Проверьте эту ссылку для получения дополнительной информации.

Пример:

if (Meteor.isServer){
  Meteor.publish('userdata', function() {   
    if(!this.userId) return null;
    return Meteor.users.find( this.userId );
  });
}

if (Meteor.isClient){
    Meteor.subscribe('userdata');
    console.log(Meteor.user());
}

Итак, проблема в том, что console.log недоступен на сервере (где этот файл работает в соответствии с соглашениями каталога Meteor.). Если вы хотите войти в консоль сервера, вы можете использовать Meteor._debug() который работает так же, как console.log. Вы также можете рассмотреть возможность упаковки вашего кода в Meteor.startup(function() {}); заблокировать, чтобы он работал, как только сервер раскручивается.

Другие вопросы по тегам