Запросы в Firestore мелкие, это означает, что когда вы запрашиваете документы с помощью запроса, вы получаете только соответствующие документы в коллекции, к которой вы обращаетесь, а не документы из их вложенных коллекций.
Таким образом, вам необходимо сначала запросить родительский документ transaction
(который является асинхронным процессом), а когда вы его получите, запросить подсборку (которая также является асинхронным процессом).
Если мы предположим, что в коллекции transaction
есть только один документ с handler_id = 3
, вы бы сделали что-то вроде следующего:
db.collection("transaction").where("handler_id", "==", 3).get()
.then(querySnapshot => {
return querySnapshot.docs[0].ref.collection('chat').get();
})
.then(querySnapshot => {
querySnapshot.forEach(doc => {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
});
Если вы хотите установить слушатель подколлекции chat
должен просто вызвать метод onSnapshot()
вместо get()
, как показано ниже:
db.collection("transaction").where("handler_id", "==", 3).get()
.then(querySnapshot => {
querySnapshot.docs[0].ref.collection('chat').onSnapshot(querySnapshot => {
// Do whatever you want with the querySnapshot
// E.g. querySnapshot.forEach(doc => {...})
// or querySnapshot.docChanges().forEach(change => {...})
// See https://firebase.google.com/docs/firestore/query-data/listen#listen_to_multiple_documents_in_a_collection
});
});