Я использую @react-native-firebase/firestore
Я должен неправильно продумывать коллекции или документы, но я бы ожидал, что приведенные ниже правила безопасности не позволят мне получить документы через onSnapshot
, если им будет отказано при прямом получении их через doc
, но это не так
// I get permission denied when doing this
firestore().doc('users/KRImYj0Lrmv00P9KRAuJ').get()
// I do not get permission denied when doing this and can access the document I can't get above
firestore().collection('users').onSnapshot()
Правила безопасности
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{user} {
allow read: if resource.data.is_deleted == false
allow write: if false;
}
}
}
ОБНОВЛЕНИЕ ПОЛНОГО КОДА
// FIRST
try {
await firestore()
.collection('users')
.where('is_deleted', '==', true)
.onSnapshot((snapshot) => {
if (snapshot) {
snapshot.forEach((s) => {
console.log('User', s.data())
})
}
})
}
catch (error) {
console.log(error)
}
// SECOND
try {
const docs = await firestore()
.collection('users')
.where('is_deleted', '==', true)
.get()
console.log(docs)
}
catch (error) {
console.log(error)
}
Первый возвращает снимки, и я могу записать документы
FIRST LOGS
User {"fname": "Steve", "is_deleted": true, "lname": "Kaspar", "name": "Steven Kaspar", "name_change_count": 2}
User {"fname": "Brian", "is_deleted": true, "lname": "Fitz"}
SECOND LOGS
[Error: [firestore/permission-denied] The caller does not have permission to execute the specified operation.]