Как получить только новые данные?

Я пытаюсь создать простую систему уведомлений для моего администратора сайта, и мне нужно отправлять только сообщения в реальном времени каждому пользователю admin. Но когда я использую firebase, он загружает старые данные на каждую страницу, а пользователь видит все сообщения из базы данных. Если я установил лимит (1), пользователь увидит последнее уведомление при каждой перезагрузке страницы:

var eventsList = new Firebase('https://*****-messages.firebaseio.com/');

eventsList.on('child_added', function(message) {
    var message = message.val();
    $.notification(message.message);
});

Как я могу загружать только новые сообщения без старой истории уведомлений?

Ответ 1

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

var newItems = false;
var eventsList = new Firebase('https://*****-messages.firebaseio.com/');

eventsList.on('child_added', function(message) {
  if (!newItems) return;
  var message = message.val();
  $.notification(message.message);
});
eventsList.once('value', function(messages) {
  newItems = true;
});

Ответ 2

Я бы прокомментировал вышесказанное, но из-за репутации я не могу, поэтому надеюсь, что это будет адекватно, и это касается последнего комментария Гроффа МакГруффа.

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

Если вы его уволили раньше, это приведет к победе цели и захвату всех дочерних элементов независимо от того, вы сразу же установите переменную newItems.

Кроме того, я использовал этот подход, и он работает хорошо.