Wie verschachtelte Objekte in Fires abfragen

stimmen
1

Ich möchte Daten in folgendem Format speichern:

{
   chatName: Football,
   chatMembers:
   [
      {
         userId: nSWnbKwL6GW9fqIQKREZENTdVyq2,
         name: Niklas
      },
      {
         userId: V3QONGrVegQBnnINYHzXtnG1kXu1,
         name: Timo
      },
   ]
} 

Mein Ziel ist es, alle Chats zu erhalten, in dem die in Benutzer signiert mit einem userIdin der ist die chatMembersListe. Wenn die userIdvon dem in Benutzer signiert nicht mit der auf der chatMembersEigenschaft, dann sollte das Chat ignoriert werden. Ist das möglich?

Wenn dies nicht möglich ist, wie kann ich achive dies mit Subkollektionen?

Meine Entwicklungssprache ist Dart, aber Sie können auch Lösungen in anderen Sprachen veröffentlichen.

Mein aktueller Versuch ist dies, aber das funktioniert nicht:

_firestore.collection(collectionName).where(chatMembers.userId, isEqualTo: userId).snapshots()
Veröffentlicht am 20/10/2018 um 12:50
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
4

Seit August 2018 gibt es die neuen array_containsBetreiber , die auf Array - Werten basierte Filterung ermöglicht. Der Doc ist hier: https://firebase.google.com/docs/firestore/query-data/queries#array_membership

Es funktioniert sehr gut mit Arrays von Strings. Aber ich denke, dass es nicht möglich ist, für eine bestimmte Eigenschaft eines Objekts in dem Array gespeichert abzufragen. Eine Abhilfe ist für das gesamte Objekt abzufragen, wie folgt (in Javascript). Natürlich kann dies nicht in jeder Situation möglich sein ....

    var db = firebase.firestore();
    var query = db.collection('chatDocs').where("chatMembers", "array-contains", { userId: "xyz", userName: "abc" });
Beantwortet am 20/10/2018 um 13:12
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more