У меня есть приложение чата, в котором я пытаюсь отправить уведомления всем подписчикам. Я должен перебирать пользователей, чтобы использовать идентификаторы в предложении where для получения их токенов устройства
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
exports.newTopicNotification = functions.firestore
.document('topics/{id}/topic/{doc}/chat/{chat}')
.onWrite( async event => {
const allMessages = event.after.data();
const db = admin.firestore();
let data: any;
if (allMessages) { data = allMessages; }
const title = data ? data.title : '';
const topicId = data ? data.topicId : '';
const groupId = data ? data.groupId : '';
console.log('incomingData', data);
const payload = {
notification: {
title: 'New group topic post',
body: `${title}`
}
};
let users: any = [];
let devices: any = [];
const tokens: any = [];
users = await db.collection('topics')
.doc(`${groupId}`)
.collection('topic')
.doc(`${topicId}`)
.get();
console.log('users', users.data().subscribers);
for (let i = 0; i < users.data().subscribers.length; i++) {
const devicesRef = db.collection('devices').where('userId', '==', users.data().subscribers[i]);
const device = await devicesRef.get();
devices.push(device);
console.log('device', devices);
}
// here the result keeps showing the error
devices.forEach(result => {
const token = result.data().token;
tokens.push(token);
});
return admin.messaging().sendToDevice(tokens, payload);
});
Не знаю, почему в результате возникла такая ошибка, но в результате она не позволяет мне загружать в облачные функции. Любая помощь будет принята с благодарностью.