Я работаю над FCM и мне нужны токены устройств для всех участников в канале / комнате, чтобы отправлять push-уведомления, и у каждого участника есть несколько устройств, для этого мне нужно два для цикла.
Я использую async / await с запросами Firestore, но он не ожидает результата, обрабатывает его в фоновом режиме и переходит к следующему оператору, которому нужны данные результата.
const notification = async (channelId) => {
let tokens = []
const members = await db.collection('channels/' + channelId + '/members').get();
await members.forEach(async (member) => {
const deviceTokens = await db.collection('users/' + member.id + '/devices').get();
await deviceTokens.forEach(async (token) => {
console.log(token.id);
await tokens.push(token.data().token);
})
})
console.log(tokens);
return await sendPush(tokens); // calling other functions
}
Я ожидаю, что выходные данные будут tokens = ['token1', 'token2', 'token3'], но фактический вывод будет tokens = []