Мой запрос довольно прост: ограничение количества документов во вложенной коллекции с использованием правил Firestore.
Я уже знаю, что можно узнать размер массива, используя .size()
. Итак, вы можете спросить, почему я не использую массив для хранения своих предметов? Что ж, я хочу, чтобы «обычный» пользователь не мог обновлять поле родительского документа, но мог добавить документ в мою подколлекцию.
Я уже пытался сделать это:
match /slots/{slot} {
allow read: if true;
allow write: if getRole() == 'ADMIN';
match /participants/{participant} {
allow read: if true;
allow create: if get(/databases/$(database)/documents/slots/$(slot)/participants).size() < 2;
allow delete: if participant.data.id == request.auth.uid || getRole() == 'ADMIN';
}
}
Но get(/databases/$(database)/documents/slots/$(slot)/participants)
не работает, так как get()
следует использовать только для извлечения одного документа.
Может быть, я могу попробовать что-то с облачными функциями ...
Есть ли у меня решение моей проблемы?
Спасибо за вашу помощь!