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

326
Visualizações
Problema con la función programada. Error: el valor del argumento "valor" no es una restricción de consulta válida. No se puede usar "indefinido" como valor de Firestore

Estoy escribiendo una función en la nube que moverá los eventos caducados de una colección a otra. No funciona como se esperaba y soy muy novato en Javascript. Por favor salvame.

 const functions = require("firebase-functions"); const admin = require("firebase-admin"); admin.initializeApp(); const db = admin.firestore(); exports.expireEvents = functions.region("us-west2").pubsub.schedule('* * * * *').onRun(async (context) => { await db.collection("Events").where('endDate', '<=', admin.firestore.Timestamp.now().millisecondsSinceEpoch).get().then((snapshot) => { snapshot.forEach(async (doc) => { // For all expired events, we will perform operations on some of their fields const event = doc.data(); // Write document to collection of "expired events" await db.collection("ArchivedEvents").doc(event.eid).set(event); // For all the guests in that expired event, do stuff; guests should be a list of strings. event.guests.forEach(async (uid) => { // Create a new write batch const batch = db.batch(); // Get user and update some attributes const guest = await db.collection("Users").doc(uid); // Add all operations to be performed for given user to this batch batch.update(guest, {eventsAttended: admin.firestore.FieldValue.arrayUnion(event.eid)}); batch.update(guest, {eventsAttending: admin.firestore.FieldValue.arrayRemove(event.eid)}); // Execute batch of operations await batch.commit(); }); // Delete doc from "not expired" collection await db.collection("Events").doc(event.eid).delete(); }); console.log(`Successfully expired events ending on ${admin.firestore.Timestamp.now()}.`); return true; }) .catch((err) => { console.error(`Could not get or update documents. Error ${err}.`); return false; }); });

Esta es la siguiente parte del error. Probé con una colección sin documentos y con algunos documentos, pero estoy empezando a pensar que debido a que ninguno de ellos ha caducado todavía, ¿es por eso que recibo este error?

Resto del registro de errores

 If you want to ignore undefined values, enable `ignoreUndefinedProperties`. at Object.validateUserInput (/workspace/node_modules/@google-cloud/firestore/build/src/serializer.js:277:19) at validateQueryValue (/workspace/node_modules/@google-cloud/firestore/build/src/reference.js:2230:18) at CollectionReference.where (/workspace/node_modules/@google-cloud/firestore/build/src/reference.js:1061:9) at /workspace/index.js:139:33 at cloudFunction (/workspace/node_modules/firebase-functions/lib/cloud-functions.js:131:23) at /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/function_wrappers.js:144:25 at processTicksAndRejections (node:internal/process/task_queues:96:5)
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Tienes al menos dos problemas:

  1. Creo que desea un objeto de Date de JavaScript (no un objeto de Timestamp de tiempo de Firebase) en su consulta, es decir, where('endDate', '<=', new Date())
  2. Firebase Timestamp no tiene una propiedad millisecondsSinceEpoch que, creo, está causando el error "indefinido" que está encontrando.
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