Могу ли я установить для одного ребенка значение .write: true, в то время как другим запрещено? - PullRequest
0 голосов
/ 17 января 2019

У меня есть объект под названием «Сервис». Это может прочитать любой, но изменения могут быть внесены только владельцем. Мое правило пожарной базы для этого: -

"Service": {
".read": true,
"$uid":  {
    ".write": data.child('owner').val() == auth.uid"
   }
}

У службы есть дочерний элемент «владелец», который == для пользовательского интерфейса пользователя при входе через Firebase Auth.

У меня также есть объект User, который может сделать Сервис любимым. Я сохраняю их в пользовательском объекте в виде массива [businessKey: true].

Однако меня также попросили сохранить в объекте службы обратное отношение того, что пользователи одобрили. Таким образом, массив Однако, поскольку пользователь не всегда является владельцем службы, я сталкиваюсь с ошибкой прав доступа. Я пытаюсь написать правила, которые позволяют любому писать одному ребенку, но не другим.

Я пытался ...

"Service": {
".read": true,
"$uid":  {
    ".write": data.child('owner').val() == auth.uid" || data.child('users').val() != root.child('users').val()"
   }
}

это позволило бы выполнить запись, если пользователь был владельцем Сервиса, или просто изменил дочерних «пользователей». В результате любой пользователь мог писать что угодно.

Я тоже пробовал

"Service": {
".read": true,
"$uid":  {
    "$users": {
        ".write" : true,
    },
    ".write": "data.child('owner').val() == auth.uid"
    } 
}

полагая, что это всегда позволит писать «пользователям» и любому другому ребенку, если пользователь был владельцем.

Я довольно новичок в firebase, и этот синтаксис правил вообще, поэтому я, вероятно, совершаю явную ошибку! Если что я хочу достичь возможно? что я не так понял?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...