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

163
Vistas
¿Cómo construir una base de fuego donde la consulta de uno de los campos tiene permisos bloqueados?

Así que tengo una colección sobre la que quiero consultar, pero no tengo permisos para ver todos los documentos. ¿Puedo hacer una consulta que no falle si solo se me bloquea uno de los documentos que estoy consultando? ¿O debo hacer un preprocesamiento para limpiar primero los identificadores de artículos?

 firebase .firestore() .collection("articles") .where(firebase.firestore.FieldPath.documentId(), "in", articleIds) .get() .then((results) => results.docs .map((result) => console.log(result.data())) )

Entonces, si articleIds = [1, 2, 3, 4, 5], entonces todo está bien, porque tengo permiso para ver esos artículos y la llamada se realiza correctamente. Sin embargo, si articleIds=[1, 2, 3, 4, 100], la llamada falla porque no tengo permiso para ver el artículo 100.

Entonces, ¿hay alguna manera de hacer que esta llamada tenga éxito incluso si no tengo permisos?

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

0

No especifica las reglas de seguridad que le otorgan acceso a los documentos 1-5 y le niegan el acceso a 100. (Los documentos ) dicen que necesita estructurar su consulta para que coincida con las reglas de seguridad. Eso implica que incluso si tiene acceso a los documentos [1, 2, 3, 4, 5], la consulta debería fallar, a menos que su regla de seguridad dependa de esa identificación.

La consulta falla incluso si el usuario actual es realmente el autor de cada documento de la historia. El motivo de este comportamiento es que cuando Cloud Firestore aplica sus reglas de seguridad, evalúa la consulta según su conjunto de resultados potencial, no según las propiedades reales de los documentos en su base de datos. Si una consulta podría incluir potencialmente documentos que violan sus reglas de seguridad, la consulta fallará.

 db.collection("stories").where("author", "==", user.uid).get()

Esto tendría éxito porque la regla de seguridad otorga acceso de lectura a una historia basada en el autor, y eso es parte de su consulta. Otro ejemplo en la página:

 match /mydocuments/{doc} { allow read: if resource.data.x > 5; }

Esta consulta falla porque potencialmente puede devolver documentos con x <= 5, incluso si los ID 1 y 3 no existen:

 db.collection("mydocuments").where("x", "in", [1, 3, 6, 42, 99]).get()

Pero esto tiene éxito porque todos los documentos consultados pasan la regla:

 db.collection("mydocuments").where("x", "in", [6, 42, 99, 105, 200]).get()
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