Recientemente intenté actualizar la función de nube .WriteOn en una función de nube programada para mi aplicación Firebase. El objetivo es ejecutar una función cada 4 días que elimina los mensajes que tienen más de 2 días. Esto funcionó perfectamente para la función .WriteOn pero, por supuesto, eso significaba que la función se ejecutaba cada vez que se creaba un mensaje; que era exagerado. Aquí está la función que tengo en mi archivo index.js...
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers. const functions = require('firebase-functions'); // The Firebase Admin SDK to access the Firebase Realtime Database. const admin = require('firebase-admin'); admin.initializeApp() exports.scheduledFunction = functions.pubsub.schedule('every 96 hours').onRun(async (context) => { const ref = admin.database().reference('messages/{pushId}'); var now = Date.now(); var cutoff = now - 24 * 60 * 60 * 1000; var oldItemsQuery = ref.orderByChild('timeStamp').endAt(cutoff); return oldItemsQuery.once('value', function(snapshot) { // create a map with all children that need to be removed var updates = {}; snapshot.forEach(function(child) { updates[child.key] = null }); // execute all updates in one go and return the result to end the function return ref.update(updates); }); });Aquí está el error de ejecución que estoy leyendo en mi consola de Firebase Functions...
ScheduledFunction TypeError: admin.database(...).reference no es una función
El mensaje de error te dice que esta línea de código está llamando a un método que no existe:
const ref = admin.database().reference('messages/{pushId}'); De hecho, no existe un método llamado "referencia" en el objeto de base de datos devuelto por admin.database() . Usando la documentación de la API, puede ver que la base de datos () devuelve un objeto de base de datos que amplía aún más una base de datos diferente. Allí verás que hay un método ref() . No hay reference() . Tal vez eso es lo que querías usar.
const ref = admin.database().ref('messages/{pushId}');Además, esto es lo que verá en el código de ejemplo en la documentación . Revíselo para asegurarse de que está siguiendo los ejemplos correctos para JavaScript.