无法访问循环集合中的集合

时间:2018-11-01 15:03:44

标签: firebase google-cloud-firestore

我想在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);
});

1 个答案:

答案 0 :(得分:1)

使用forEach() method,您的cookUser对象是QueryDocumentSnapshot

如文档(上面的链接)中所述,“ QueryDocumentSnapshot提供与DocumentSnapshot相同的API表面”。因此,您应该使用refDocumentSnapshot抽象类型,如下所示:

   snapshot.forEach(cookUser => {
      cookUser.ref.collection('meals').get().then(snapshot2 => {
        .....
      })
   })

https://firebase.google.com/docs/reference/js/firebase.firestore.QuerySnapshot#forEach