Функции Firebase и многопутевые обновления - PullRequest
0 голосов
/ 27 апреля 2018

Я много искал по этому вопросу и, похоже, не нашел нужной информации. Как вы обрабатываете многопутевые обновления в БД реального времени, чтобы не задавать значение rateLimitExceeded (число триггеров на 100 с по триггерам вашей функции, onWrite, onUpdate, onCreate, onDeleted)?

Наши триггеры настроены так:

exports.markersUpdate = functions.database.ref('/v1/markers/{pushId}').onWrite((change, context) => {
    const record = change.after.val();
    const fbKey = context.params.pushId;
    ...
});

Я подумал, что, возможно, я мог бы запустить на родительском узле так, но это вернуло бы всю коллекцию, а не только обновления:

exports.markersUpdate = functions.database.ref('/v1/markers').onWrite((change, context) => {
    ...
});

Эта функция в основном реплицирует обновления в хранилище данных для лучшего анализа данных. Это работает нормально, но нашему приложению иногда нужно обновлять несколько сотен записей одновременно, и мы получаем ошибку rateLimitExceeded даже в плане Blaze.

Есть ли способ получить список обновленных элементов, чтобы я мог обработать его в функции?

1 Ответ

0 голосов
/ 27 апреля 2018

То, что вы пытаетесь сделать, невозможно с помощью облачных функций. Облачные функции обрабатывают отдельные записи как отдельные вызовы функций. Нет пакетной обработки и нет очереди записей для пакетной обработки позже.

Если вы хотите сделать однократную копию данных, вам лучше написать отдельную программу для запроса данных, которые вы хотите скопировать, и создать собственное пакетное обновление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...