У меня проблемы с добавлением правил безопасности в мою базу данных firebase. Я хочу разрешить удаление голосов, только если аутентифицированный пользователь равен свойству uid в документе для голосования. Все работает отлично, КРОМЕ для правила удаления, которое я создал в match /votes/ndomvoteId‹.
Я пытался сделать это с resource.data.uid, но симулятор жалуется, и я получаю сообщение об ошибке «Ошибка выполнения симуляции - Ошибка: simulator.rules Ошибка нулевого значения»
service cloud.firestore {
match /databases/{database}/documents {
match /polls/{pollId} {
allow read;
allow delete: if getUserData().roles.keys().hasAny(['admin']);
allow create: if isSignedIn();
}
match /users/{userId} {
allow read, write: if isOwner(userId);
}
match /votes/{voteId} {
allow read;
allow create: if isSignedIn();
allow delete: if request.auth.uid == resource.data.uid;
}
}
/// Functions ///
function isSignedIn() {
return request.auth != null
}
function isOwner(userId) {
return request.auth.uid == userId
}
}
Обновление
Я также пытался использовать подстановочный знак / {document = **}, и он выдал мне ту же ошибку нулевого значения
match /votes/{document=**} {
allow read;
allow create: if isSignedIn();
allow delete: if request.auth.uid == resource.data.uid;
}
Я также пытался использовать функцию get (), но получил сообщение об ошибке «Функция не найдена: Имя: [get]
»
match /votes/{voteId} {
allow read;
allow create: if isSignedIn();
allow delete: if get(/databases/$(database)/documents/votes/$(voteId)).data.uid == request.auth.uid
}