Метеор - Как автоматически перенаправить пользователя на страницу при изменении данных

Я пишу приложение Meteor, которое принимает внешние данные с машины (например, IoT) и отображает множество диаграмм, графиков и т. д. Пока все хорошо. В приложении есть разные страницы (пока по одной на тип графика). Теперь, когда данные передаются в «реальном времени», возникает ситуация (нормальная), когда «набор» данных полностью сбрасывается. т.е. все данные уже недействительны. Когда это происходит, я хочу перенаправить пользователя обратно на «Домашнюю» страницу независимо от того, где он находится (ну, кроме домашней страницы).

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

Поскольку каждая страница довольно «независима», и пользователь может оставаться на странице в течение длительного времени (графики автоматически обновляются по мере изменения базовых данных), я даже не уверен, что iron:router — лучший подход.

Это Метеор 1.0.X кстати.

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

Спасибо!


person sjmcdowall    schedule 15.05.2015    source источник


Ответы (1)


Это задание для cursor.observeChanges http://docs.meteor.com/#/full/observe_changes Настройте коллекцию, которая служит «уведомлением о сбросе», которое рассылается всем пользователям при вставке нового уведомления.

На клиенте:

criteria = {someCriteria: true};
query = ResetNotificationCollection.find(criteria)
var handle = query.observeChanges({
  added: function (id, user) {
    Router.go('home');
  }
});

Всякий раз, когда происходит сброс:

notification = { time: new Date(), whateverYouWantHere: 'useful info' }
ResetNotificationCollection.insert notification

При вставке все клиенты, наблюдающие за изменениями в коллекции, ответят на эффективное небольшое сообщение DDP.

person Justin    schedule 15.05.2015