У меня есть следующая структура данных в Firebase Firestore, чтобы представить отношения многие ко многим между клиентами и пользователями:
Clients
clientId1 {
users (object): {
userId1: true
userId2: true
}
}
clientId2 {
users (object): {
userId1: true
}
}
Я запрашиваю его на Android, используя следующий запрос:
db.collection("clients").whereEqualTo("users."+uid, true);
Для userId2 запрос должен возвращать только clientId1.
Если я задаю правило (разрешить чтение: если истина;), когда я выполняю запрос, указанный выше, я получаю верных клиентов.
Я также хотел бы настроить правило базы данных, чтобы userId2 не мог видеть clientId2.
Я попробовал это правило, но я не получил никаких результатов:
match /clients/{clientId} {
//Allow read if the user exists in the user collection for this client
allow read: if users[request.auth.uid] == true;
}
Я тоже пробовал:
match /clients/{clientId} {
//Allow read if the user exists in the user collection for this client
allow read: if resource.data.users[request.auth.uid] == true;
}
Но ни одно из приведенных выше правил не возвращает клиентов.
Как мне написать правило?