Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda