Я создаю приложение с учебными карточками, используя базу данных Firebase в реальном времени, и хочу, чтобы пользователь мог публично делиться колодой. Это означает, что любой пользователь может видеть колоду создателя, но только создатель может редактировать. У меня проблемы с настройкой правил / структуры данных Firebase, которые позволили бы этому случиться.
Прямо сейчас это работает так: любая колода publi c помещается в узел publicDecks, получая свой собственный уникальный идентификатор со следующей структурой:
-publicDecks
|
+jiEFJfehihxi (unique deck id)
|+cards
|-deckName:"spanish vocab"
|-uid:"iawojefiaofiojfweaf" (creator's uid)
В моих правилах я хочу, чтобы любой аутентифицированный пользователь имел возможность sh новой колоды для этого узла. Но если пользователь пытается обновить существующую колоду, я хочу, чтобы правила проверяли, что auth.uid пользователя соответствует свойству uid, прикрепленному к существующей колоде.
Я установил свои правила следующим образом:
"publicDecks": {
".read": "auth != null",
"$deck":{
".write": "auth!=null && root.child('publicDecks').child($deck).child('uid').val() == auth.uid"
}
Проблема сейчас в том, что эти правила не позволяют пользователю создавать новую колоду publi c. Пользователь может редактировать только уже существующий дочерний элемент. Как я могу это исправить ... это больше вопрос моих правил или изменения структуры данных?