Я пытаюсь получить "прочитанные" правила, работающие из массива в соответствии с этим блогом https://firebase.googleblog.com/2018/08/better-arrays-in-cloud-firestore.html
var db = firebase.firestore();
db.collection("_users").where("viewers", "array-contains", myUID)
.get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.id, ' => ', doc.data());
});
});
То же в AngularFirestore
this.itemsCollection_users = this._afDB.collection("_users", ref => ref.where("viewers", "array-contains", myUID)))
The DB
/_users/EGsht477klOKW0YeYsryo0j8AkY2/sometext = "hello",
/_users/EGsht477klOKW0YeYsryo0j8AkY2/viewers [
0: hKeDFsC6wOQZGz0rP7SnJ7Vo5O73,
1: Y8xbH2avmCWmm1EBK7wappM2qE03
]
Правила БД
сервис cloud.firestore {
match /databases/{database}/documents {
match /_users/{userId} {
allow read: if request.auth.uid in resource.viewers;
}
}
}
Таким образом, пользователь EGsht477klOKW0YeYsryo0j8AkY2 должен быть доступен (читать) для всех пользователей, перечисленных в «средствах просмотра»
Предупреждение, которое я получаю ...
ERROR FirebaseError: Missing or insufficient permissions.