Fiestore в ограничении запросов - PullRequest
1 голос
/ 23 января 2020

Я использую функции 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');
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...