Предположим, у меня есть чаты как часть приложения Meteor, и внутри каждого чата пользователи должны видеть, кто еще находится в чате, а также количество пользователей во всех других чатах.
Где мне хранить чат, в котором находится каждый пользователь? Должно быть
- в предоставленной коллекции
Meteor.users
в качестве свойства для каждого пользователя? - в коллекции
Chatrooms
в виде списка пользователей в каждом чате? - Как правильно денормализовать данные, чтобы пользователь мог видеть количество людей в других чатах, не отправляя также все эти пользовательские записи?
Связанный с этим вопрос: когда мне следует хранить вещи в Meteor.users()
, а не в отдельной коллекции, содержащей документы с идентификаторами пользователей и комнат, например ChatroomParticipants
? то есть:
{ user: "foo", room: "room 1" }
{ user: "bar", room: "room 2" }
Кроме того, есть ли способ настроить это так, чтобы пользователь мог входить в одно и то же приложение из нескольких окон и находиться в разных комнатах? То есть рендеринг для конкретного пользователя не зависит от какого-то глобального состояния, которое заставляет все меняться в сеансах.