Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

229
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!