Die Idee
Eine nahe Lösung ist, einen Index Ihrer Daten zu erstellen, die von der Stadt indiziert ist in einer serverseitigen (oder welcher auch immer anderes Feld nach dem Sie suchen mögen) NodeJS Skript.
Dies wird nicht ganz replizieren das Verhalten von LIKE
, aber es wird für die einfache Abfrage von Namen der Stadt ermöglichen, die für dieses Verhalten die Notwendigkeit beseitigen können.
Der Knoten Script
Diese Regel über einen einfachen serverseitiges Skript geschrieben in NodeJS erfolgt. Stellen Sie sich ein Szenario vor, in dem Ihre Benutzerdaten in /users/data
gespeichert wurden. Dein Skript würde so aussehen.
var ref = new Firebase("<Your Firebase>.firebaseio.com");
// A Firebase ref where all our users are stored
var userDataRef = ref.child('users/data');
// A Firebase ref which is where we store our index
var byCityRef = ref.child("users/byCity");
// Then bind to users/data so we can index each user as they're added
userDataRef.on("child_added", function (snapshot) {
// Load the user details
var user = snapshot.val();
// Use the snapshot name as an ID (i.e. /users/data/Tim has an ID of "Tim")
var userID = snapshot.name();
// Push the userID into users/byCity/{city}
byCityRef.child(user.city).push(userID);
});
Dieses Skript wird eine Struktur wie folgt erstellen:
{
"users": {
"data": {
"Tim": {"hair": "red", "eyes": "green", "city": "Chicago"}
},
"byCity": {
"Chicago": {
"-asd09u12": "Tim"
}
}
}
}
Der Kunde Script
Sobald wir unsere Daten indiziert haben, dagegen Abfragen einfach und kann in zwei leicht getan werden Schritte.
Jetzt haben Sie die fast Echtzeit-Ladegeschwindigkeit von Firebase mit leistungsstarken Abfragefunktionen!
Große antwort abe! Wir werden auch einen Beitrag über kontextuelle Suchanfragen (LIKE) auf [dem Blog] (https://www.firebase.com/blog/) haben, ungefähr nächste Woche! – Kato
Wie kann dies vollständig auf der Clientseite erfolgen? Mein Backend wird nicht in Node geschrieben. Wenn ich jedoch Ihr Node-Skript auf den Client lege, führt dies dazu, dass die Indizierungslogik viele Male ausgeführt wird (einmal für jeden Client, der online ist). – parliament