2016-04-14 7 views
-1

Ich habe eine Anwendung, wo Benutzer anderen Benutzern folgen können. Ich möchte ein Echtzeit-Update-System haben, das die Gesamtzahl der Follower anzeigt, die ein Benutzer hat.Wie zeige ich die Anzahl der Follower in Echtzeit mit Firebase an?

Ich habe gerade angefangen zu spielen mit Firebase und Pusher, aber ich verstehe nicht eine Sache - wird jeder Benutzer seinen eigenen "Kanal" haben? Wie würde ich mit einem Follower-Counter-Update umgehen?

folgte ich das Tutorial und sah, dass push Methode Listen erstellen kann, so eine Lösung, die ich sehen kann eine Liste aller Benutzer ist, von denen jeder Benutzer ein Objekt in etwa so sein:

{ username: 'john_doe', follower_count: 6 } 

Aber ich verstehst du nicht, wie würde ich es tatsächlich am Frontend verfolgen? Sollte ich einen Filter haben, so etwas?

var user = users.filter(function(user) { return user.username === 'john_doe'; }); 
// code to display user.follower_count 

Oder gibt es eine andere Art, die ich vermisse?

Antwort

1

Der Großteil der Firebase-Logik basiert auf Listenern. Sie können Ereignissen, die in Ihren Sammlungen stattfinden, Listener hinzufügen. Wenn diese Ereignisse eintreten, tun Sie etwas.

Ein Weg, um dies zu realisieren wäre:

var myFollowerListRef = new Firebase(PATH_TO_YOUR_COLLECTION); 
myFollowerListRef.on("value", function(snapshot) { 
    console.log(snapshot.length); 
}); 

Auf diese Weise jedes Mal Ihre Follower Sammlung Änderungen, die asynchrone Funktion ausgelöst und Sie können tun, was Sie mit den neuen Daten mögen.

Für weitere Informationen:

https://www.firebase.com/docs/web/guide/retrieving-data.html

hoffe, das hilft, bin ich immer noch ein Anfänger in Firebase.

+0

Bedeutet das nicht, dass jedes Mal, wenn sich eine ganze Sammlung ändert, diese Funktion ausgelöst wird? Nehmen wir an, Sie haben einen Benutzernamen auf dem System und ich habe auch einen Benutzernamen. Und jemand hat dir gefolgt. Würde die App diese Funktion nicht auch für mich auslösen, wenn ich auf diese Wertänderung höre? Wie filtere ich, um nur die Funktion für Sie abzufeuern (grundsätzlich für wen auch immer ein anderer Benutzer folgt). –

+0

Sie würden natürlich separate Sammlungen von Followern für jeden Benutzer benötigen. – Th0rndike

+0

Richtig, das habe ich mir gedacht. Hmm .. Ich vermute, dass sie irgendwie dynamisch erstellt werden können. Danke, ich werde jetzt nachsehen! –

0

@ Th0rndike Ansatz ist der einfachste und funktioniert gut für relativ kurze Listen. Erwägen Sie bei längeren Listen die Verwendung einer Transaktion. Von den Firebase documentation on saving transactional data:

var upvotesRef = new Firebase('https://docs-examples.firebaseio.com/android/saving-data/fireblog/posts/-JRHTHaIs-jNPLXOQivY/upvotes'); 
upvotesRef.transaction(function (current_value) { 
    return (current_value || 0) + 1; 
}); 

Aber ich empfehle, dass Sie den gesamten Firebase Guide lesen. Es enthält Lösungen für viele gängige Anwendungsfälle.