Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

249
Vistas
¿Cómo puedo eliminar varias rutas con las funciones de la nube de Firebase?

Quiero eliminar los datos de más de 15 días. ¿Puedo consultar y eliminar varios directorios al mismo tiempo?

La estructura de la base de datos es así. Hay varios idiomas y tipos.

 { "hr" : { "classic" : { "finish" : { "-MuJD4oAlQ42TkdfKW5M" : { "gid" : "LlAHMyj", "ts" : 6.652890289073215E8 } } }, "duel" : { "finish" : { "-MuJD4o9LONeayt4ACMC" : { "gid" : "rfePU2x", "ts" : 6.652890289073215E8 } } }, "target" : { "finish" : { "-MuJD4o9LONeayt4ACMD" : { "gid" : "FBz4H_4", "ts" : 6.652890289073215E8 } } } }, "nl" : { "target" : { "finish" : { "-MuJD4oAlQ42TkdfKW5L" : { "gid" : "sv3pRfC", "ts" : 6.652890289073215E8 } } } } }

Intenté hacerlo con el siguiente código, pero siempre devuelve nulo.

 exports.deleteOldData = function (snap, context) { const end = new Date(new Date().setDate(new Date().getDate() - 15)); const endDate = toSwiftDate(end); database.ref("/matchTour/{language}/{type}/finish/").orderByChild("ts").endAt(endDate).transaction(function (info) { if (info === null) return info; console.log("matchTour 3", JSON.stringify(info.val())); return null; }).catch((error) => { console.log("error); }); };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No puede ejecutar una transacción en una consulta. De hecho, al mirar la documentación de referencia para Query , esto ni siquiera debería compilarse.

Esto debería estar más cerca:

 exports.deleteOldData = function (snap, context) { const end = new Date(new Date().setDate(new Date().getDate() - 15)); const endDate = toSwiftDate(end); const ref = database.ref("/matchTour/{language}/{type}/finish/"); return ref .orderByChild("ts").endAt(endDate) .once("value") .then((results) => { let updates = {}; results.forEach((snapshot) => { updates[snapshot.key] = null; }); return ref.update(updates); }).catch((error) => { console.error(error); }); };

Lo anterior lee los resultados de la consulta de los datos, realiza una única actualización de varias rutas para eliminarlos todos y garantiza que las promesas devueltas por la burbuja de lectura y escritura asincrónica, para que su contenedor de funciones no se termine prematuramente


Eso deja la pregunta de qué language y type están en database.ref("/matchTour/{language}/{type}/finish/") . Si se supone que hay variables que provienen del contexto, querrá usar acentos graves para esta cadena:

 database.ref(`/matchTour/{language}/{type}/finish/`)

En general, hay bastantes errores en este código que me hacen pensar que es posible que aún no se sienta muy cómodo escribiendo JavaScript del lado del servidor. Si ese es el caso, escribir Cloud Functions no es la forma más fácil de comenzar, y recomiendo primero escribir el mismo código en un entorno de JavaScript del lado del cliente, como un script local de node.js o incluso una página web.

Leer la documentación de Firebase para desarrolladores web y/o realizar el Codelab de Firebase para desarrolladores web son excelentes puntos de partida.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda