Jak dotaz vnořené objekty v FireStore

hlasů
1

Chci ukládat data v následujícím formátu:

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

Mým cílem je dostat všechny chaty, kde je přihlášen uživatel s userIdje v chatMembersseznamu. V případě, že userIdz podepsána v uživatel není ve chatMembersvlastnictví, pak to povídání by měla být ignorována. Je to možné?

Není-li to možné, jak mohu achive to s podsbírek?

Můj jazykový vývoj je oštěp, ale můžete také psát řešení v jiných jazycích.

Můj současný pokus, ale to nefunguje:

_firestore.collection(collectionName).where(chatMembers.userId, isEqualTo: userId).snapshots()
Položena 20/10/2018 v 12:50
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
4

Od srpna 2018 je nový array_containsoperátor, který umožňuje filtrování na základě hodnot polí. Doktor je zde: https://firebase.google.com/docs/firestore/query-data/queries#array_membership

Funguje to velmi dobře s matice řetězce. Nicméně, myslím, že to není možné, aby se dotázal na specifickou vlastnost objektu uložené v poli. Jedním z řešení je dotaz pro celý objekt, takto (v JavaScriptu). Samozřejmě to nemusí být proveditelné v každé situaci ....

    var db = firebase.firestore();
    var query = db.collection('chatDocs').where("chatMembers", "array-contains", { userId: "xyz", userName: "abc" });
Odpovězeno 20/10/2018 v 13:12
zdroj uživatelem

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