Правила базы данных Firebase не работают - PullRequest
0 голосов
/ 14 мая 2018

Я использую База данных Firebase в реальном времени для моего веб-приложения. У меня есть узел в базе данных с именем Users , который выглядит следующим образом:

Users{
    userID{
        Name
        Post
        Type
        AutoRefresh
        Uploads{
            upload1
            upload2
        }
        News{
            news1
            news2
        }
        Friends{
            friend1
            friend2
        }
        Requests{
            req1
            req2
        }
    }
}

Я установил следующие правила базы данных для этого узла:

{
  "rules": {
    "Users": {
      ".read": "auth != null",
      "$userID": {
        ".write": "auth.uid === $userID && !newData.hasChild('Post') && !newData.hasChild('Type') && !newData.hasChild('Friends') && !newData.hasChild('Requests') && !newData.hasChild('Uploads') && !newData.hasChild('News')"
      }
    }
}

Проблема в том, что когда я пытаюсь записать какое-либо значение в папку Users / userID / AutoRefresh из моего веб-приложения, я получаю следующую ошибку:

Uncaught (in promise) Error: PERMISSION_DENIED: Permission denied
    at Repo.js:510
    at Object.t.exceptionGuard (util.js:536)
    at e.callOnCompleteCallback (Repo.js:501)
    at Repo.js:278
    at PersistentConnection.js:402
    at t.wt (PersistentConnection.js:435)
    at e.wt (Connection.js:262)
    at e.ln (Connection.js:256)
    at t.onMessage (Connection.js:157)
    at t.Wn (WebSocketConnection.js:197)

Я использую следующий код для выполнения операции записи:

firebase.database().ref().child('Users/' + userID + '/AutoRefresh').set('Off').then(function(){
 //Do something
});

Когда я тестирую эту операцию записи в симуляторе консоли Firebase, он прекрасно записывает новое значение в узел AutoRefresh . Почему это не работает в приложении? Я что-то не так делаю?

Эта проблема возникла после применения правил. До применения правил он работал отлично.

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