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

369
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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