Разрешить запись одному ребенку в базе данных Firebase в реальном времени - PullRequest
0 голосов
/ 10 июля 2020

В базе данных Firebase в реальном времени много дочерних элементов

А в этих дочерних элементах их еще несколько.

Какое правило я добавляю, так что Read = true Butt only write дочернему «Ученику» и всему в этом ребенке

   "rules": 
{
".read": true,
".write": false
}
"Pupil": 
 {
  ".read": true,
  ".write": true
 }
}

Мне не хватает ожидаемого ',' или '}'.

1 Ответ

0 голосов
/ 10 июля 2020

Правила безопасности для базы данных Firebase Realtime в формате JSON, а то, что у вас есть, недействительно JSON. Фактически, это даже не близко.

Я настоятельно рекомендую использовать инструмент, который может показать вам, действителен ли ваш код JSON (быстрый поиск может помочь вам найти один из них).

Ближайший действительный JSON эквивалент того, что у вас есть, кажется:

{
  "rules": {
    ".read": true,
    ".write": false
  },
  "Pupil": {
    ".read": true,
    ".write": true
  }
}

Хотя сейчас это действительно JSON, это не действительный набор правил безопасности, так как вы можете иметь только один событие верхнего уровня (имена rules) в правилах безопасности, а остальные ваши правила должны соответствовать этому.

Чтобы превратить его в действующие правила безопасности, вложите узел Pupil под верхний уровень rules:

{
  "rules": {
    ".read": true,
    ".write": false,
    "Pupil": {
      ".read": true,
      ".write": true
    }
  }
}

, чтобы вы могли сохранить указанное выше в консоли Firebase без ошибка.

Вы можете немного упростить это до:

{
  "rules": {
    ".read": true,
    "Pupil": {
      ".write": true
    }
  }
}

Разрешение на чтение верхнего уровня автоматически наследуется всеми узлами под root. И по умолчанию разрешение отсутствует, поэтому здесь подразумевается ".write": false на root.

...