Я новичок в firestore и пытаюсь получить все ресурсы от группы пользователей.
В моем случае я использую токен авторизации для отслеживания групп пользователей (я буду использовать это и в облачном хранилище).
Объект группы похож на:
{"managers": { "user1_ID": "owner", "user2_ID": "client" } }
Затем в токене авторизации я устанавливаю UID группы:
{ "groups": { "group1_ID": "owner", "group2_ID": "client" } }
Тогда в правилах firestore я хочу установить что-то вроде этого:
match /groups/{groupId} {
allow create: if request.auth.uid != null;
allow read: request.auth.token[groupId] != null;
allow delete, update: if request.auth.token[groupId] == 'owner';
}
Но теперь я могу просто получить или обновить документ, когда у меня есть идентификатор группы, а правило для чтения документов не позволяет мне найти все группы, в которые входит пользователь, для их перечисления.
Код, который я пытался запустить:
this.unsubscribe = db.collection("groups").onSnapshot(querySnapshot => {
var groups = [];
querySnapshot.forEach(function(doc) {
groups.push({uid: doc.id, ...doc.data()});
});
this.setState({sites})
})
Единственное решение, которое я думаю (но еще не проверено) - это получить каждую группу из токена авторизации и сделать запрос на каждый, но я думаю, что это, вероятно, не очень хорошее решение.
Я уже тестировал, используя объект ресурса firestore name и id и даже вставляя id внутри документа.