Предположим, существуют следующие правила
service cloud.firestore {
match /databases/{database}/documents {
function roomAccess() {
return resource.data.allow_anonymous == true || (request.auth.uid == resource.data.uid);
}
function writeOnlyOwner() {
return request.auth.uid == resource.data.uid;
}
match /rooms/{room_id} {
allow read: if roomAccess();
allow write: if writeOnlyOwner();
allow create: if request.auth.uid != null;
}
}
}
Кроме того, именно так выглядит документ в коллекции rooms
Вопрос Есть ли способ запросить определенную комнату, где access_key
установлено какое-то значение?
db.collection('rooms')
.where('access_key', '==', access_key)
.get()
Важно отметить, что я запрашиваю как creator
комнаты (и room.uid
с совпадает с моим uid
Тем не менее, он не работает с правами доступа. И документация, по-видимому, не описывает такое поведение.
Что касаетсякак я понял, запрос не выполняется, потому что может быть some
комнат, с этим access_key
, для которых roomAccess()
потерпит неудачу. Но я не могу найти способ обойти это.