Как я могу отобразить список всех зарегистрированных пользователей с Meteor.JS


Я уже несколько дней пытаюсь получить список зарегистрированных пользователей в приложении Meteor chat. Я перепробовал много разных вещей. Мне удалось добавить флаг входа в объект профиля пользователя. Сторона сервера:

Accounts.onCreateUser(function(options, user) {
    if(!options.profile){
        options.profile = {}
    }
    options.profile.login = false;
    if (options.profile)
        user.profile = options.profile;
    return user;
});

В консоли браузера я получаю следующее:

Meteor.user().profile
Object {login: false}

Так что, похоже, это работает.

Теперь я хочу перечислить, вошли ли пользователи в систему: Сторона клиента

Deps.autorun(function(){
    if(Meteor.userId()){
        Meteor.user().profile.login=true;
    }
});

После проверки логин остается ложным при входе в систему.

Этот шаблон html дает мне список всех имен пользователей, но не флаг входа

{{#each allUsers}}
<p>{{username}}</p><p>{{profile.login}}</p>
{{/each}

Итак, мои проблемы: профиль.логин остается ложным, и я не могу отобразить профиль.вход, но имена пользователей отображаются.

Заранее благодарю вас. Приветствую Тебя, Джорис

1 2

1 ответ:

Чтобы изменить свойство users profile.login, вам нужно сделать Meteor.users.update(..) или вызвать метод сервера, который это делает. Просто изменить свойство объекта пользователя не получится.

Вообще я бы рекомендовал не сохранять состояние пользователей в базе данных mondodb, а хранить его в коллекции в памяти.

Проще всего было бы просто использовать один из них пакеты:

Или изучите их исходный код, чтобы увидеть, как распространять статус пользователя.