Я пытаюсь написать облачную функцию firebase для автоматического удаления события после того, как дата пройдена.
Основываясь на этом примере Пример Firebase , я пришел к этому, но когда я загружаю его на Firebase, он работает на стороне Firebase, но не удаляет события.
У вас, ребята, есть советы или что-то не так в моем коде? Возможно ли, что проблема может исходить от триггера onWrite()
?
/* My database structure
/events
item1: {
MyTimestamp: 1497911193083
},
item2: {
MyTimestamp: 1597911193083
}
...
*/
// Cloud function to delete events after the date is passed
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.deleteOldItems = functions.database.ref('/events/{eventId}').onWrite((change) => {
const ref = change.after.ref.parent; // reference to the parent
const now = Date.now();
const oldItemsQuery = ref.orderByChild('MyTimestamp').endAt(now);
return oldItemsQuery.once('value').then((snapshot) => {
// create a map with all children that need to be removed
const updates = {};
snapshot.forEach(child => {
updates[child.key] = null;
});
return ref.update(updates);
// execute all updates in one go and return the result to end the function
});
});