Τρόπος υποβολής ερωτημάτων ένθετα αντικείμενα στο firestore

ψήφοι
1

Θέλω να αποθηκεύουν τα δεδομένα στην εξής μορφή:

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

Ο στόχος μου είναι να πάρει όλες τις συνομιλίες, όπου ο υπογράφηκε στο χρήστη με ένα userIdβρίσκεται στη chatMembersλίστα. Εάν η userIdτου υπογεγραμμένου στο χρήστη δεν είναι στην chatMembersιδιοκτησία, τότε θα πρέπει να αγνοηθεί το γεγονός ότι συνομιλία. Είναι δυνατόν;

Εάν αυτό δεν είναι δυνατόν, πώς μπορώ να επιτυγχάνουμε αυτό με υποσυλλογές;

ανάπτυξη μου γλώσσα είναι βελών, αλλά μπορείτε επίσης να καταχωρήσετε λύσεις σε άλλες γλώσσες.

τρέχουσα προσπάθεια μου είναι αυτό, αλλά αυτό δεν λειτουργεί:

_firestore.collection(collectionName).where(chatMembers.userId, isEqualTo: userId).snapshots()
Δημοσιεύθηκε 20/10/2018 στις 12:50
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
4

Από Αυγ 2018 υπάρχει το νέο array_containsφορέα ο οποίος επιτρέπει το φιλτράρισμα βασίζεται σε αξίες συστοιχία. Το έγγραφο είναι εδώ: https://firebase.google.com/docs/firestore/query-data/queries#array_membership

Λειτουργεί πολύ καλά με συστοιχίες της σειράς. Ωστόσο, νομίζω ότι δεν είναι δυνατό να υποβάλετε ερώτημα για μια συγκεκριμένη ιδιότητα ενός αντικειμένου που αποθηκεύονται στον πίνακα. Μία λύση είναι να ερώτημα για ολόκληρο το αντικείμενο, ως εξής (σε Javascript). Φυσικά αυτό μπορεί να μην είναι εφικτό σε κάθε περίπτωση ....

    var db = firebase.firestore();
    var query = db.collection('chatDocs').where("chatMembers", "array-contains", { userId: "xyz", userName: "abc" });
Απαντήθηκε 20/10/2018 στις 13:12
πηγή χρήστη

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