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

323
Vistas
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 Respuestas
Responde la pregunta

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 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