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

364
Vistas
Reglas de Firestore: la propiedad no está definida en el objeto. para 'lista' @ L6

Tengo un problema en el que intento consultar una subconsulta por un campo, y probé el emulador y el soporte de firebase (todavía en curso, pero aún no hay soluciones).

Al ejecutar la siguiente consulta:

 const queryByNumber = query( collectionGroup(this.firestore, 'residents'), where('cellNumber', '==', number) ); return from(getDocs(queryByNumber));

Esta consulta tiene el error de:

La propiedad cellNumber no está definida en el objeto. para 'lista' @ L6

Así es como se ven las reglas en este momento.

 rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{path=**}/residents/{residentDoc} { allow write: if resource.data.cellNumber == request.auth.token.phone_number; allow read: if request.auth.token.phone_number == resource.data.cellNumber; //allow read; //temp permission till support fix } match /Units/{unitNumber} { allow read: if request.auth != null; function residentDoc(residentId) { return get(/databases/$(database)/documents/Units/$(unitNumber)/residents/$(residentId)) } match /pets/{petId} { allow write: if residentDoc(request.resource.data.residentId).data.cellNumber == request.auth.token.phone_number; allow read: if request.auth != null; } } } }

Y esta es la estructura de datos de firestore en este momento:

estructura de datos de la tienda de fuego

Intenté cambiar mi consulta para que la array-contains en la cláusula where, pero eso no cambia mucho.

Nota: la allow read sin marcar si permite que se recuperen los datos, por lo que la consulta funciona, solo que las reglas para asegurarla no lo son.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El problema está en esta condición en sus reglas:

 request.auth.token.phone_number in resource.data.cellNumber

La operación in las reglas de seguridad de Firestore solo se define para mapas y listas/matrices, pero su campo cellNumber es un valor de cadena simple, que no define una operación in puede ver aquí .

Si desea verificar si el número de teléfono en el token es el mismo que el valor del campo, use == en lugar de in . Si desea probar si está en el campo, considere usar el método de matches en la cadena .

Ver también:

  • Las reglas de seguridad de Firebase firestore permiten si el ID del documento contiene una cadena
  • Uso de contains() con reglas de base de fuego
about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema fue otra consulta que intentaba obtener todos los datos residentes después de que se activara la inicial, lo que provocó que fallara la regla porque la segunda ya no consultaba por número de cellNumber . He cambiado las reglas para validar por UID ya que siempre se proporcionará

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