Симулятор отказывается устанавливать новые данные в базу данных Firebase - PullRequest
0 голосов
/ 31 октября 2018

Я корректирую правила для моей базы данных Firebase. Когда я пытаюсь установить новые данные в моей базе данных, мне всегда отказывают. Это правила моей базы данных:

 {
  /* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
  "rules": {

    "challenges":{
      ".write": "auth != null",
      //".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && !data.exists()) || (auth.uid.value == data.child(\"player1Uid\").val() || auth.uid.value == data.child(\"player2Uid\").val()))",
      ".read": "auth != null"
    },

    "comments":{
        ".write": "auth != null",
//      ".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && !data.exists()) || auth.uid.value == data.child(\"writerUid\").val())",
      ".read": "auth != null"
    },

    "lessons":{
       ".write": "auth != null",
      //".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && !data.exists()) || auth.uid.value == data.child(\"writerUid\").val())",
      ".read": "auth != null"
    },

    "posts":{
      ".read": "auth != null",
      //".write": "auth != null"

         "$postId": {
        // a new post can be created if it does not exist
        // existing posts can only be edited by their original "author"
        ".write": "(!data.exists() && newData.exists() && auth != null) || data.child('writerUid').val() == auth.uid || auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" "
        //".validate": "newData.hasChildren(['title', 'author', 'timestamp'])",
     }
    },

    "questions":{
      ".write": "auth != null",
      //".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && !data.exists()) || auth.uid.value == data.child(\"writerUid\").val())",
      ".read": "auth != null"
    }, 

    "users":{
      ".write": "auth != null",
      //".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\" || ((newData.exists() && data.child(\"userEmail\").val() != null) || auth.token.email == data.child(\"userEmail\").val())",
      ".read": "auth != null"
    },

  }
}

Когда я пытаюсь добавить новое сообщение, в нем всегда будет отказано, если я попытаюсь добавить новое сообщение с идентификатором пользователя, который я написал жестко, в приложении, которое он также отклонил. Я потратил очень много времени, пытаясь установить свои правила, но не могу установить его до сих пор, и обнаружил, что правила не могут быть отлажены, поэтому я надеюсь, что кто-то поможет мне решить эту проблему.

Это моя структура базы данных:

enter image description here

1 Ответ

0 голосов
/ 31 октября 2018

Вы должны раскомментировать эту строку

      //    "$postId": {

У вас уже есть сообщения в узле "posts", поэтому !data.exists возвращает false и блокирует ваше новое сообщение

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