# #javascript #firebase #google-cloud-firestore #firebase-security
Вопрос:
Я знаю, что это проблема, которая возникает с правилами firebase для проекта, но я не знаю, почему это происходит. Я пытаюсь получить снимок документов, которые в настоящее время находятся внутри пути, но я получаю ошибку разрешения firebase
Вот код, обратите внимание, что это использует nuxt vue, я только начинаю работать с фреймворком, так что это может быть странно, но, насколько я понимаю, это должно работать:
mounted(){
this.getPosts();
},
methods:{
getPosts(){
database.collection('blog').doc('yP6aYXvisFbTsqtQ3MEfuyz6xYE3').collection('posts').onSnapshot(snapshot =>{
console.log(snapshot)
})
}
}
И таковы правила:
match /blog {
allow read;
allow write: if request.auth.uid == 'BoTJcdHh9ogYZUWEaKWbEkuPzTJ2'
}
Я понимаю, что все, что находится на этом пути, должно быть доступно для чтения, но ошибка разрешения все еще отображается.
Ответ №1:
Вам нужно установить правило на уровне документа, а не коллекции.
Так, например:
match /blog/{blogId}/posts/{postId} {
allow read;
}
Из документации:
Все утверждения о совпадении должны указывать на документы, а не на коллекции. Оператор соответствия может указывать на определенный документ, как в match /cities/SF, или использовать подстановочные знаки для указания на любой документ по указанному пути, как в match /cities/{город}.
Подробнее читайте здесь: https://firebase.google.com/docs/firestore/security/rules-structure