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

226
Vistas
Google Cloud Function elimina el documento de Firestore

Probé mi javascript en el emulador local. Hay 2 acciones, si la marca de tiempo tiene más de 7 días, elimine el documento (esto funciona de maravilla <3), pero el resto es que debe verificar el "img", es una URL normal si esto devuelve 404 y luego elimine como en la primera acción , esto SOLO funciona en el emulador local, cuando lo implemento en la función de la nube ya no funciona y solo dice, por ejemplo, "La ejecución de la función tomó 7957 ms, terminó con el estado: 'ok'" PERO en local funciona como se esperaba.

 exports.removeExpiredDocuments = functions.region('europe-west1').runWith({ memory: "256MB" }).pubsub.schedule("every 1 hours").onRun(async (context) => { const db = admin.firestore(); const now = firestore.Timestamp.now(); const ts = firestore.Timestamp.fromMillis(now.toMillis() - 604800000); // 168 hours in milliseconds = 604800000 const snaps = await db.collection("products").get(); let promises = []; snaps.forEach((snap) => { // functions.logger.info("forEachSnap"); if (snap.data().created_time < ts) { promises.push(snap.ref.delete()); functions.logger.info('[Time] older than 7 Days ' + snap.data().name, { structuredData: true }); } else { requesth(snap.data().img, function (error, response) { functions.logger.info('[img] error: ' + error, { structuredData: true }); if (response.statusCode == 404) { promises.push(snap.ref.delete()); functions.logger.info('[img] not found ' + snap.data().name, { structuredData: true }); } }); } }); return Promise.all(promises); });

Trabajando en el emulador local (con la misma URL que en firebase) y espero que también funcione en la nube

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

firestore.Timestamp.now() no devuelve un valor que pueda compararse correctamente con otras marcas de tiempo con comparaciones < y >. Eso significa que esta línea de código no hace lo que piensas:

 if (snap.data().created_time < ts)

Si desea comparar dos objetos de marca de tiempo entre sí, debe adoptar otro enfoque. Una forma es convertirlos a milisegundos con toMillis() y comparar esos enteros entre sí. O conviértalos a Fecha y compárelos con el método de objeto apropiado.

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