我想在for循环中访问另一个集合中的一个集合。
可能吗?我在第四行Error getting documents TypeError: cookUser is not a function
var mealsOnline = [];
return db.collection('users').get().then(function (snapshot) {
snapshot.forEach(cookUser => {
cookUser.collection('meals').get().then(function (snapshot2) {
snapshot2.forEach(meal => {
if (meal.data().portion > 0) {
var mealObject = meal.data();
mealObject.id = meal.id;
mealObject.address = cookUser.data().address;
mealObject.cookName = cookUser.data().displayName;
mealsOnline.push(mealObject);
}
});
});
});
return Promise.all(mealsOnline);
}).catch(err => {
console.log('Error getting documents', err);
});
答案 0 :(得分:1)
使用forEach()
method,您的cookUser
对象是QueryDocumentSnapshot。
如文档(上面的链接)中所述,“ QueryDocumentSnapshot提供与DocumentSnapshot相同的API表面”。因此,您应该使用ref的DocumentSnapshot抽象类型,如下所示:
snapshot.forEach(cookUser => {
cookUser.ref.collection('meals').get().then(snapshot2 => {
.....
})
})
https://firebase.google.com/docs/reference/js/firebase.firestore.QuerySnapshot#forEach