2017-09-16 1 views
1

Ich möchte bestimmte Werte in einem Firebase-Eintrag in einem Minutenintervall aktualisieren können. Ich bin nicht sicher, wie dies zu tun, sondern haben versucht, die folgenden:Update Firebase-Einträge in einem Intervall

var interval = setInterval(function(){ 
    database.ref().on('value',function(snapshot){ 
    snapshot.forEach(function(childSnapshot) { 
     var item = childSnapshot.val(); 
     item.key = childSnapshot.key; 
     database.ref(item.key).update({ item.trainTimeLeft: moment(item.trainFrequency).subtract(moment(moment(Date.now())).diff(item.trainTimeStamp,"minutes"),"minutes") }); 

    }); 
    }); 

},60000); 

I moment.js für Zeitdifferenzen bin mit (Ich versuche, eine Aktualisierung Zugfahrplan zu machen). Alle Einträge befinden sich im Hauptbereich der Firebase.

+0

ich will auch eine Bedingung dies nur tun, hinzufügen, wenn es Elemente in Feuerbasis sind – cerrach

Antwort

1

Verwenden Sie setInterval(), um Ihre Funktion alle X Meile Sekunden, die Sie wollen, auszulösen.

Verwenden firebase.database.ref() auf Ihre Datenbank zugreifen Knoten Sie aktualisieren möchten.

Verwenden .update() die Datenbank Knotenwert zu aktualisieren.

Verwenden firebase.database.ServerValue.TIMESTAMP Serverzeit zu erhalten. Die Verwendung des Client-Zeitstempels ist aufgrund unterschiedlicher Zeitzonen nicht sicher.

Mit diesem können Sie Ihre Funktion schreiben. Es sollte in etwa so aussehen:

Betrachten Sie diesen Code nur als ein Beispiel, keine Kopie/Paste-Lösung.

Ich hoffe, es hilft.

0

Es hat keinen Sinn, die Datenbank abzufragen, sondern zu sagen, dass Sie auf Wertänderungen (Änderungen) warten wollen.

Von Read and Write Data on the Web

Wichtig: Der Wert Ereignis jedes Mal Daten aufgerufen wird, wird an der angegebenen Datenbankreferenz geändert, einschließlich Änderungen an Kinder. Um die Größe Ihrer Schnappschüsse auf zu beschränken, hängen Sie sie nur an die niedrigste Stufe an, die für erforderlich ist, um Änderungen zu beobachten. Beispielsweise wird das Anhängen eines Listeners an das Stammverzeichnis Ihrer Datenbank nicht empfohlen. Das folgende Beispiel zeigt eine sozialen Blogging-Anwendung das Abrufen der Anzahl Sterne eines Post von die Datenbank:

var starCountRef = firebase.database().ref('posts/' + postId + '/starCount'); 
starCountRef.on('value', function(snapshot) { 
    updateStarCount(postElement, snapshot.val()); 
}); 
Verwandte Themen