Я пытаюсь работать с обещаниями в своей облачной функции, потому что для этого нужно получить несколько документов.
Проблема, с которой я сталкиваюсь, состоит в том, что код не ждет 'для каждого л oop». Моя функция завершена, прежде чем она сможет получить все 'userdo c'.
Это мой код:
const snapshot= await admin.database().ref('/np/'+data.placeID).once('value');
await admin.database().ref('/np/'+data.placeID).update({"c": snapshot.val()['c'] != null ? snapshot.val()['c'] + 1 : 1,});
const queryForPlace = await db.collectionGroup('place')
.where('placeID', '==', data.placeID).get()
var tokenList: any[] = [];
const promises: any[] = [];
queryForPlace.docs[0].data().owners.forEach(async (user: string) => {
const userdoc = await db
.collection('users')
.doc(user)
.get();
//ADDING THE TOKENS OF THE USER TO THE LIST
tokenList.push.apply(tokenList, userdoc.data().fcm);
promises.push(userdoc);
})
await Promise.all(promises)
return 1;
Моя функция будет выполнять следующее:
- выполнить запрос
- записи для местоположения, чтобы получить список всех пользователей, подключенных к местоположению (в do c)
- , получить токены fcm всех подключенных пользователи
- отправьте сообщение fcm (мне все еще нужно реализовать эту часть)
Что я делаю не так?
Спасибо за вашу помощь и время!