Я использую функции Firebase для отправки уведомлений. Я получаю сообщение об ошибке из-за ограничения IN-запроса, которое я узнал сегодня:
INVALID_ARGUMENT: В запросе может быть не более 100 фильтров + порядки сортировки + общее количество предков. В настоящее время существует 112 фильтров
Что вы предлагаете с помощью приведенного ниже кода для решения проблемы:
PS: Followers - это массив с идентификаторами пользователей: [123, 234, 345,. ..]
exports.clubActivity = functions
.region('europe-west1')
.firestore.document('Calendar/{calendarId}')
.onCreate(async (snapshot: any) => {
// Notification Details
const payload = {
notification: {
title: 'Yeni Etkinlik',
body: snapshot.data().owner + ' yeni bir etkinlik oluşturdu.',
sound: 'default'
},
data: {
type: 'club-activities'
}
};
// Club Info
const clubInfo = await admin
.firestore()
.collection('Clubs')
.where('name', '==', snapshot.data().owner)
.get();
// Token List
const allTokens = await admin
.firestore()
.collection('Devices')
.where('personId', 'in', clubInfo.docs[0].get('followers'))
.get();
// Token Array
const tokens: any[] = [];
allTokens.forEach(tokenDoc => {
tokens.push(tokenDoc.id);
});
// Notification to Token Array
if (tokens.length > 0) {
await admin.messaging().sendToDevice(tokens, payload);
} else {
console.log('Error');
}
});