Comment faire pour récupérer uniquement les nouvelles données?
Je suis en train de créer simple système de notification pour mon site admin, et j'ai besoin d'envoyer en temps réel des messages à chaque utilisateur admin. Mais quand j'utilise firebase il charge des données anciennes sur chaque page, et à l'utilisateur de voir tous les messages à partir de la base de données. Si j'ai mis la limite de(1) l'utilisateur va voir la dernière notification sur chaque page de rechargement:
var eventsList = new Firebase('https://*****-messages.firebaseio.com/');
eventsList.on('child_added', function(message) {
var message = message.val();
$.notification(message.message);
});
Comment je peux charger uniquement les nouveaux messages, sans vieux notification de l'histoire?
- Comme de Firebase 2.x, il existe maintenant des façons plus rapides pour accomplir cela en utilisant des requêtes. Voir les différentes réponses pour Comment jeter des données initiales dans Firebase DB
- Depuis l'utilisation de cette question est de la création d'une file d'attente de messages, la meilleure réponse est d'utiliser un message de file d'attente de stratégie, où les événements sont ajoutés et supprimés de la file d'attente, et de ne pas s'embêter avec ce qui ajoute à la complexité. Veuillez prendre en compte que la route avant d'aucune des réponses ci-dessous
Vous devez vous connecter pour publier un commentaire.
C'est par la conception, dans un système temps-réel il n'y a pas de concept de la "dernière" de données, car il est toujours en train de changer. Cependant, si vous souhaitez afficher uniquement les éléments ajoutés à la liste après la page chargée, vous pouvez effectuer les opérations suivantes:
newItems
serafalse
once
incendies aprèson
? À partir de le lire, car ils sont à la fois async il semble que c'est juste une condition de course.eventsList.once('value', function(messages) { // Do stuff for all messages // Now (and only now), add the 'child_added' listener eventsList.on('child_added', function(message) { var message = message.val(); $.notification(message.message); }); });
once
incendies aprèson
seulement parce qu'il est ajouté après. Si vous avez échangé des lieux et de mettre leonce
plus haut dans le script il déclenche en premier.Les deux auditeurs de déclencher un téléchargement de l'ensemble de la liste de données. Les différences entreon
etonce
est queon
est relancée lors de la modification des données. La différence entrechild_added
etvalue
est quechild_added
est déclenché pour chaque élément individuel.on
auditeur à l'intérieur de laonce
écouteur, vous recevrez tous les messages que vous avez obtenu dans leonce
.Je voudrais commenter ci-dessus, mais en raison de la réputation, je ne peut pas, donc, en espérant que c'est suffisant et c'est pour répondre au dernier commentaire par Bourru McGruff.
Une fois les feux de après parce que vous voulez sortir de la boucle d'accaparement de tous les éléments enfants. Une fois que la boucle est cassé, vous allez définir la newItems variable à true, et alors il sera en mesure de recevoir tous les nouveaux enfants par la suite.
Si vous avez tiré avant, il allait à l'encontre du but et de saisir tous les éléments enfants, quel que soit parce que vous aurez mis le newItems variable immédiatement.
Aussi, j'ai utilisé cette méthode et ça fonctionne bien.