У меня есть коллекция под названием «клиенты», и я разрешил некоторым пользователям чтение и запись этой коллекции. Моё требование - я должен ограничивать операцию удаления только одним документом за раз, чтобы избежать массового удаленияcollection.Как я могу добиться этого, используя правило безопасности firestore.? Теперь я попробовал с приведенным ниже кодом
match /customers/{customer=**} {
function isSignedIn() {
return request.auth != null;
}
function isRole(roles) {
return get(/databases/$(database)/documents/Teachers/$(request.auth.uid)).data.permissions.pages.hasAny(roles);
}
function isSize(size){
return request.resource.data.size()==size;
}
allow read: if isSignedIn()&&isRole(['create','modify']);
allow create,update:if isSignedIn()&&isRole(['create','modify']);;
allow delete:if isSignedIn()&&isSize(1)
}
Вот код для удаления операции;
async(id:string){
const batch=afs.firestore.batch();
const coll=await afs.firestore.collection('customers').ref.limit(1).where('id','==',id).get();
for(const i of coll.docs){
const ref= await afs.firestore.collection('customers').doc(i.id);
await batch.delete(ref);
}
return await batch.commit();
}
ноПриведенное выше правило всегда возвращает отклоненное разрешение при выполнении операции удаления.