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

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

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 Report

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