Ich bin ein bisschen neu in der Meteorwelt und versucht, den Dreh raus, aber stecken geblieben auf etwas.Subskriptionsreaktivität ohne Benutzereingabe und eine Verschiebung Zeitrahmen in der Veröffentlichung
Ich möchte eine Untergruppe einer Anrufauflistung auf einer Seite anzeigen, die keine Benutzerinteraktion hat (siehe als Ankunfts- oder Abfahrtstafel an einem Bahnhof).
Ich habe eine Veröffentlichung, die Container eine Teilmenge von Anrufen mit einem Zeitraum.
Meteor.publish('currentcalls', function(){
var start = moment().subtract(24, 'hours').toDate();
var end = moment().add(24, 'hours').toDate();
return Calls.find({appointment: {$gte: start, $lt: end}});
});
Ich mache ein Template-Abonnement mit einem Autorun auf der Vorlage.
Template.HomeLayout.onCreated(function() {
this.autorun(() => {
this.subscribe('currentcalls');
});
});
Wenn ich einen Anruf in die Datenbank innerhalb des festgelegten Zeitrahmen von -24 Stunden und + 24 Stunden eingeben, erhält der Anruf auf der Vorlage angezeigt. Wenn ich einen lösche, wird er vom Display gelöscht. Wenn jedoch ein Anruf in der Datenbank mit einem Datum in der Zukunft und nicht innerhalb des in der Veröffentlichung festgelegten Zeitrahmens hinzugefügt wird, wird er nicht automatisch angezeigt, wenn die Zeit fortschreitet, es sei denn, es gibt einen Auslöser, der die Reaktivität verursacht das Abonnement/die Veröffentlichung mit Benutzerinteraktion.
Was wäre ein guter Ansatz, um sicherzustellen, dass die Anrufe, die schließlich in den sich ständig ändernden Zeitrahmen eintreten oder ihn verlassen, angezeigt oder aus dem Display entfernt werden?
habe ich versucht, die Veröffentlichung veröffentlichen, aber es wird einen Fehler in dem Konsolenprotokoll auf dem Server:
I20160730-11:47:03.521(0)? Ignoring duplicate publish named 'currentcalls'
Für jetzt habe ich einen schnellen und schmutzige Neuladen der Seite habe.
Meteor.setInterval(function() {
window.location.reload();
}, 60000);
Aber ich bin sicher, dass nicht der Meteor-Weg! ;-) Jeder möglicher Eingang geschätzt!