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

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

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

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