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

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

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