У меня есть функция запуска с помощью 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