Ich habe folgende Datenbankstruktur:AngularFire2 orderByKey und startat
{
"users" : {
"ap1-AXLKSD9ASLKDJJ0991" : {
"enabled" : true,
"color" : "red"
},
"ap1-A778ASDUASDJ8AS8DA" : {
"enabled" : true,
"color" : "blue"
},
"ap2-ASD88ASD8ASD8HAS8D" : {
"enabled" : true,
"color" : "red"
}
}
}
Ich versuche, alle Benutzer zu erhalten, der einen Schlüssel, die mit „ap1-“ haben, wie folgt:
import { Injectable } from '@angular/core';
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
import * as firebase from 'firebase/app';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class FirebaseService {
//
// Database
userList: FirebaseListObservable<any>;
public constructor(
public afDb: AngularFireDatabase) {
}
getUsers() {
return this.userList = this.afDb.list('/users', {
preserveSnapshot: true,
query: {
orderByKey: true,
startAt: 'ap1-'
}
});
}
}
Die Der obige Code gibt jedoch ap1- und ap2-Schlüssel zurück. Ich werde online gesucht und finde keinen Weg, dies zu erreichen.
Ich versuchte mit equalTo .. wenn ich den genau richtigen Schlüssel einfüge, findet es nur dies. Wenn ich einen Nonsense-Schlüssel einfüge, findet er nichts.
Es scheint, als gäbe es einen Fehler in startAt?
Ok bekommen, so wie würde ich in der Lage sein, das zu erreichen, Ergebnis? Es muss eine Möglichkeit geben, alle Schlüssel zu finden, die mit einer bestimmten Zeichenfolge beginnen oder diese enthalten. – flipcode
Wenn die Suche immer gleich ist, können Sie einen neuen Wert für jedes Objekt haben, wie zum Beispiel: '" ap1-A778ASDUASDJ8AS8DA ": { " aktiviert ": true, " color ":" blau ", searchPattern:" ap1 " }, 'und verwenden Sie dann' Abfrage: { orderByChild: search, equalsTo: 'AP1' } ' – avilao
Oder so etwas wie dies versuchen: https://stackoverflow.com/questions/38618953/how-to-do- a-simple-search-in-string-in-firebase-Datenbank – avilao