В дополнение к проблеме, на которую указал Дуг (необходимо использовать свойство ref
QueryDocumentSnapshot
), необходимо учитывать, что метод get()
является асинхронным.
Таким образом,
users.forEach(snapshot => {
var monthlies = snapshot.ref.collection('monthlies').get()
console.log(monthlies.docs.map(doc => doc.data()))
})
не будет работать.
Если вы не можете использовать запрос группы сбора (например, давайте представим, что ваша функция getUsers()
возвращает только подмножество всех пользователей, например, всех пользователей данной страны), вы можете использовать Promise.all()
следующим образом:
var getMonthlyByUserId = async function () {
const users = await getUsers();
const promises = [];
users.forEach(snapshot => {
promises.push(snapshot.ref.collection('monthlies').get());
});
const monthlies = await Promise.all(promises);
monthlies.forEach(snapshotArray => {
console.log(snapshotArray.docs.map(doc => doc.data()));
});
}
ИЛИ вы можете использовать эту технику описанный в этой статье о том, как использовать async / await внутри forEach()
.