2016-07-23 12 views
2

Ich habe viele Einträge an der gleichen Stelle. Ich möchte nur die 10 neuesten Artikel mit Geofire erhalten. Ich weiß, dass es einfach mit Firebase mit Query.limitToLast() getan werden kann, aber ich weiß nicht, wie man es mit Geofire macht.Begrenzen Sie die Anzahl der abgefragten Artikel von GeoFire

Wenn es nicht möglich ist, haben Sie eine Problemumgehung, die ich anwenden kann?

+0

sieht aus wie es keine solche Methode ist durch die Anzahl der Elemente in GeoFire zu begrenzen, gibt es nur nach Radius. Wenn Sie die neuesten hinzugefügten Elemente abrufen möchten, können Sie FirebaseQuery verwenden, um dies in Ihrem Knoten "items", nicht in dem Knoten "geofire" zu tun, und es kommt auf den Fall an. – Wilik

Antwort

1

Es gibt keine Möglichkeit, die Anzahl der Schlüssel von Geofire zu beschränken: Es werden alle Schlüssel zurückgegeben, die in den Bereich fallen, den Sie abfragen.

Das Einzige, was mir einfällt, ist, keine Objekte einzufügen, wenn sich bereits ein anderes Objekt in der Nähe befindet. Sie gruppieren im Wesentlichen Elemente, während Sie in diesem Fall in die Datenbank schreiben.

+0

Das Problem, dass die Elemente Nachrichten sind und sie alle eingefügt werden müssen, auch wenn sie an der gleichen Stelle sind ... Was mich nicht interessiert, sind alte Nachrichten (ich glaube nicht, dass meine Benutzer daran interessiert sind mehr als 50 alte Nachricht) ... Ich entdeckte, dass es nicht möglich ist, dies mit GeoFire zu tun, und ich versuche, einen Workaround oder einen Weg zu diesem zu finden. Leider ist mir das nicht gelungen. Hast du andere Vorschläge? – user655561

+0

Durch Workaround: Ich meine etwas, das andere Dinge als Geofire beteiligt, zum Beispiel eine andere Tabelle zu Firebase speichern und es verwenden, um Geofire-Abfrage zu begrenzen, ist es möglich? – user655561

+0

Es sieht so aus, dass die zurückgegebenen Werte basierend auf dem Zeitpunkt der Erstellung geordnet sind. Wenn diese Reihenfolge umgekehrt werden kann, entferne ich den Listener, wenn die Anzahl der Elemente gleich 50 ist. Gibt es eine Möglichkeit, die Reihenfolge der Erstellung umzukehren? – user655561

1

Es gibt nur eine Lösung dafür:

Sie eine Abfrage mit einem kleinen Radius beginnen sollte,

und jedes Mal, wenn Sie onGeoQueryReady() („Alle Daten wurden geladen“) erreichen, Sie erhöhen der Radius um einen kleinen Betrag des geoquery mit .setRadius (r), bis Sie die Grenze erreichen Sie

wollen

auf dieser Basis https://github.com/firebase/geofire-js/issues/59