Для запроса коллекции Firestore, вам нужно использовать метод get()
.
Выполнение const postsCol = await admin.firestore().collection('posts')
не будет запрашивать базу данных, оно просто определяета CollectionReference
.То же самое для postsCol.where('sentBy', '==', elem)
или postsCol.orderBy("sentAt", "desc").limit(5)
: они определяют Query
, но не извлекают базу данных.
Каждый запрос к коллекции с помощью метода get()
является асинхроннымоперация: метод get()
возвращает Promise
, который разрешается с результатами запроса.
Поскольку вы хотите запустить несколько запросов параллельно, вы должны использовать Promise.all()
,следующим образом:
const queries = [];
idsList.forEach(elem => {
queries.push(admin.firestore().collection('posts').where('sentBy', '==', elem).get());
})
Promise.all(queries)
.then(results => {
//Do whatever you want with the results array which is an array of QuerySnapshots
//See https://firebase.google.com/docs/reference/js/firebase.firestore.QuerySnapshot.html
})
Примечание: если вы используете этот код в облачной функции, не забудьте вернуть обещания, возвращаемые асинхронными операциями (включая обещаниевозвращается Promise.all()
).