Я относительно новичок в Firebase и использую его для интеграции Firestore и аутентификации с приложением ReactJS, над которым я работаю.
Я знаю, что в коллекциях хранятся документы, а в действительности документы хранятся пары ключ-значение. У меня есть коллекция песен, и в ней есть следующие поля: -
Создана метка времени
Тексты песен
Название песни
Я могу войти в систему пользователя с помощью аутентификации с помощью firebase, получить UID пользователя при входе в систему и создать новую песню, запись сделана в база данных с идентификатором документа в качестве UID.
Все это работает, только если мои правила установлены на
match /{document=**} {allow read, write:}
Когда я изменяю свои правила на это: -
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /songs/{songID} {
allow read: if request.auth!=null;
allow write: if isValid();
}
function isValid(){
return request.resource.data.uid == request.auth.uid;
}}}
Я получаю следующую ошибку, когда Я запускаю его.
Unhandled Rejection (FirebaseError): Missing or insufficient permissions.
Я просто хочу убедиться, что вошедший в систему пользователь может читать, писать и обновлять свои собственные песни, и ничего кроме этого.
1) Я не могу понять, как создать правила firebase для достижения этой цели и предотвратить ошибки разрешения.
2) Если я использую идентификатор документа в качестве UID, то есть тот же документ ID для 5 песен. Как я смогу обновить название песни / текст песни, поскольку идентификатор документа для конкретного пользователя будет таким же?