Почему для Autocommit установлено значение true?

У меня есть функция запуска с помощью HTTP, которая удаляет узлы, в зависимости от того, когда они были созданы и их срок годности.

Когда я добавляю узел в базу данных, ему нужны два поля: timestamp, чтобы узнать, когда

Затем у меня есть эталонная функция HTTP:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

/**
 * @function HTTP trigger that, when triggered by a request, checks every message of the database to delete the expired ones.
 * @type {HttpsFunction}
 */
exports.removeOldMessages = functions.https.onRequest((req, res) => {
    const timeNow = Date.now();
    const messagesRef = admin.database().ref('/messages');
    messagesRef.once('value', (snapshot) => {
        snapshot.forEach((child) => {
            if ((Number(child.val()['timestamp']) + Number(child.val()['duration'])) <= timeNow) {
                child.ref.set(null);
            }
        });
    });
    return res.status(200).end();
});

Вы можете создать задание cron, которое каждые X минут делает запрос на URL-адрес этой функции: https://cron-job.org/en/

Но я предпочитаю запускать собственный скрипт, который делает запрос каждые 10 секунд:

watch -n10 curl -X GET https://(your-zone)-(your-project-id).cloudfunctions.net/removeOldMessages

30
задан BalusC 15 December 2010 в 19:11
поделиться