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

391
Views
La consulta de Firestore de una colección de documentos en la que no existe algún campo no funciona

Tengo una colección de documentos en una base de datos de Firestore. Todos los documentos tienen un campo llamado "deudorEmail", pero solo algunos de ellos tienen también un campo llamado "acreedorEmail". Quiero leer todos los documentos en los que "creditorEmail" está ausente. Según la documentación de Firestore:

 const notCapitalQuery = query(citiesRef, where("capital", "!=", false));

Esta consulta no devuelve documentos de ciudad donde el campo de capital no existe. Las consultas no iguales (!=) y no incluidas excluyen documentos en los que el campo dado no existe.

Mi código es el siguiente:

 const docCollection = collection(db, "requests"); const dataSection = document.getElementById("data-section"); const qRequests = query(docCollection, where("creditorEmail", "!=", false));

pero esta consulta entrega precisamente aquellos documentos en los que existe acreedorEmail. Si cambio "falso" por "verdadero", la consulta arroja los mismos resultados. Es como si la condición "!=" no funcionara. ¿Alguien tiene alguna idea de lo que está mal?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Las consultas de Firestore siempre se basan en la información que existe sobre un documento en el índice que se usa en esa consulta, y si el documento no tiene un campo, no se incluirá en un índice en ese campo.

Así que lo que estás viendo es el comportamiento esperado.

Considere darle al campo un valor predeterminado, como una cadena vacía para campos de cadena. De esa forma, el documento estará presente en los índices sobre/incluido ese campo.

Ver también:

  • Firebase Firestore JavaScript: busque un documento con un campo sin configurar

Actualización: para probar su caso, creé una colección 69963042 con tres documentos:

  • fDmsBjxCdg3xygzjxZo0 sin datos en absoluto.
  • lxRXLFHoG2NPtC1brv2D con un campo de capital establecido en false .
  • wnXLanoHLacRoblnJ7wo con un campo de capital establecido en true .

Luego ejecuté tres consultas:

 const q = query( collection(db, "69963042"), where("capital", "!=", false) ); const querySnapshot = await getDocs(q); querySnapshot.forEach((doc) => { console.log(`${doc.id}: capital=${doc.get("capital")}`) })

Esto registra:

"wnXLanoHLacRoblnJ7wo: mayúscula=verdadero"

Cambiar la condición a where("capital", "!=", true) , conduce al registro de:

"lxRXLFHoG2NPtC1brv2D: mayúscula=falso"

Y finalmente, cambiar la condición a where("capital", "==", false) , conduce al registro:

"lxRXLFHoG2NPtC1brv2D: mayúscula=falso"

Ninguna de las consultas devuelve el documento sin el campo de capital , que funciona como se esperaba.

Para obtener el código y la configuración de mi base de datos en caso de que quiera probarse a sí mismo, consulte https://jsbin.com/hudayez/edit?html,console

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!