1

Ich versuche eine Liste von Dokumenten zu erstellen. Lassen Sie uns sagen, dass ich diese Art von Struktur haben:Firebase Firestore Wie liste ich autorisierte Dokumente auf?

cards 
    cardId1 
    authorizedUser = someuserid1 
    cardId1b 
    authorizedUser = someuserid1 
cardId2 
    authorizedUser = someuserid2 

ich die ersten zwei Dokumente für „someuserid1“ und die letzte für „someuserid2“ aufgelistet werden sollen. Was ist der beste Weg, es zu tun? Ich habe versucht, Sicherheitsregeln, aber es hat nicht funktioniert:

service cloud.firestore { 
    match /databases/{database}/documents { 
    match /cards/{cardid} { 
     allow read, write: if resource.data.authorizedUser == request.auth.uid; 
    } 
    } 
} 

Und diese meine Kotlin Code:

val query = FirebaseFirestore.getInstance() 
        .collection("cards") 
        .limit(50) 
val options = FirestoreRecyclerOptions.Builder<Card>() 
       .setQuery(query,Card::class.java) 
       .build() 

adapter = CardFireAdapter(options) 

Jede Idee, was ich hier fehlt?

Antwort

1

Die Sicherheitsregeln definieren, welcher Abfragetyp zulässig ist.

Die eigentliche Filterung muss noch in der Abfrage erfolgen:

val query = FirebaseFirestore.getInstance() 
       .collection("cards") 
       .whereField("authorizedUser", isEqualTo: "someuserid1") 
       .limit(50) 
+0

Danke, es funktioniert. Ich habe die .whereEqualTo() -Methode verwendet, da es keine .where() -Methode gibt (mehr?). –

+0

Das war in der Tat ein Fehler in meinem Teil, die Syntax ist leicht unterschiedlich zwischen den Plattformen. Ich habe die Antwort aktualisiert. –

Verwandte Themen