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

311
Views
Nuxt + Firebase FirebaseError: permisos faltantes o insuficientes

Estoy tratando de leer una colección de documentos solo si el documento tiene la identificación de usuario del usuario actual que inició sesión con firebase. Aquí están las reglas de mi base de datos:

 rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /todos/{todoId} { allow read: if isLoggedIn() && request.auth.uid == resource.data.userId; allow create: if isLoggedIn() && request.auth.uid == request.resource.data.userId; allow update, delete: if isLoggedIn() && request.auth.uid == resource.data.userId; } function isLoggedIn() { return request.auth != null; } } }

Crear documentos no es un problema, pero sí leerlos. Aquí está mi función que recupera los datos:

 getData () { this.$fire.firestore.collection('todos').get() .then((doc) => { if (doc.exists) { console.log('Document data:', doc.data()) } else { // doc.data() will be undefined in this case console.log('No such document!') } }).catch((error) => { console.log('Error getting document:', error) }) }

Parece que la regla resource.data.id no apunta a todo el ID de usuario y, por lo tanto, aparece FirebaseError: Permisos faltantes o insuficientes . Aquí está mi estructura de base de datos actual:

Estructura de datos de base de fuego

¿Alguna idea sobre por qué la regla no funciona según lo previsto?

about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

Las reglas de seguridad de Firebase no filtran datos . En cambio, simplemente se aseguran de que cualquier operación que realice cumpla con las reglas que ha establecido.

Entonces, esta regla que tiene dice que el usuario solo puede leer documentos que tienen su propio UID:

 allow read: if isLoggedIn() && request.auth.uid == resource.data.userId;

Pero luego su código continúa e intenta leer todos los documentos:

 this.$fire.firestore.collection('todos').get()

Dado que sus reglas no permiten leer todos los documentos, se rechaza la operación.

Para permitir la operación, asegúrese de que su operación de lectura coincida con sus reglas y solo solicite documentos donde el UID coincida:

 let uid = ... this.$fire.firestore.collection('todos').where("userId", "==", uid).get()
about 4 years ago · Santiago Gelvez Report

0

Ya resolví el problema, el método para obtener los datos de firestore estaba incompleto,la solución estaba en la documentación de firebase .

La forma correcta de recuperar datos es usando la restricción where :

 getData () { this.$fire.firestore.collection('todos').where('userId', '==', this.user.uid).get() .then((docs) => { if (docs) { // console.log('Document data:', docs.data()) docs.forEach((doc) => { console.log(doc.data()) }) } else { // doc.data() will be undefined in this case console.log('No such document!') } }).catch((error) => { console.log('Error getting document:', error) }) }
about 4 years ago · Santiago Gelvez 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!