My request is pretty simple in appearence : limiting the number of documents in a subcollection using Firestore Rules.
I already know that it is possible to know the size of an array using .size()
. So, you may ask why I am not using an array to store my items ? Well, I want a "normal" user to not be able to update my parent document field but to be able to add a document to my subcollection.
I already tried to do this :
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';
}
}
But get(/databases/$(database)/documents/slots/$(slot)/participants)
does not work as get()
should only be used for fetching a single document.
Maybe I can try something with cloud functions...
I there any solution to my problem ?
Thank you for your help !
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…