Изменение подписки на коллекцию Meteor для всех клиентов

Я разрабатываю веб-приложение, в котором мне нужен один клиент, связанный с admin, для запуска события (например, нового значения, выбранного в раскрывающемся списке), которое, в свою очередь, сообщит всем остальным подключенным клиентам изменить подписку, возможно, используя параметр, т. е. новое выбранное значение.

Что-то в духе

Template.bid.events
  "change .roles": (e, tpl) ->
    e.preventDefault()
    role = tpl.$("select[name='role']").val()
    Meteor.subscribe role

Конечно, это работает только для текущего клиента.
Я подумал, что одним из способов будет сохранение отдельной коллекции, указывающей на используемую текущую коллекцию, чтобы клиенты могли программно воздействовать на нее. Это кажется громоздким, ты.

Есть ли способ Meteor для достижения этой цели?
Спасибо.


person dfucci    schedule 24.07.2015    source источник


Ответы (2)


В метеоре всякий раз, когда у вас возникает проблема, которая звучит так: «Мне нужно синхронизировать данные между клиентами», вы должны использовать коллекцию. Я понимаю, что послать один фрагмент данных кажется излишним, но уверяю вас, в настоящее время это путь наименьшего сопротивления.

Есть способы выставить псевдоколлекции, которые на самом деле не пишут в монго, но для вашего варианта использования это действительно звучит как излишество - new Mongo.Collection - это путь.

person David Weldon    schedule 24.07.2015

Вы можете использовать потоки для настройки простой линии связи между подключенными клиентами и сервером. Он не хранит данные в MongoDB. Просто позвольте всем подключенным клиентам слушать поток и переключать подписки, когда приходит новое сообщение с названием подписки. Убедитесь, что только ваш клиент, связанный с вашим администратором, может отправлять сообщения в поток.

Доступный пакет: https://atmospherejs.com/lepozepo/streams

Примеры: http://arunoda.github.io/meteor-streams/

person Sceptic    schedule 25.07.2015