Нет, это невозможно без выдачи нового запроса. Не существует метода, который бы позволял это для DocumentSnapshot
.
Чтобы проиллюстрировать это, представим, что вы получаете городской документ через запрос (который, как вы знаете, возвращает только один документ):
var citiesRef = db.collection("cities");
citiesRef.where("name", "==", "Brussels").get()
.then(function(querySnapshot) {
if (!querySnapshot.empty) {
var doc = querySnapshot.docs[0];
console.log("Document data:", doc.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
и вы знаете, что в этом документе есть подгруппа для ресторанов этого города. Если вы хотите получить эту коллекцию, вам нужно будет сделать:
var citiesRef = db.collection("cities");
citiesRef.where("name", "==", "Brussels").get()
.then(function(querySnapshot) {
if (!querySnapshot.empty) {
var doc = querySnapshot.docs[0];
var restaurantsCollRef = citiesRef.doc(doc.id).collection("restaurants");
return restaurantsCollRef.get();
} else {
throw new Error("No such document!");
}
})
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, " => ", doc.data());
})
}).catch(function(error) {
console.log("Error getting document:", error);
});
Следует отметить, что на самом деле документ и один из его подколлекций, с технической точки зрения, не связаны друг с другом.
Давайте рассмотрим пример: представьте документ doc1
в коллекции col1
col1/doc1/
и еще один subDoc1
в коллекции subCol1
(sub-)
col1/doc1/subCol1/subDoc1
На самом деле, они просто разделяют часть своего пути, но больше ничего. Одним из побочных эффектов этого является то, что если вы удаляете документ, его подколлекция (ы) все еще существует.