Как определить, что только одно поле записывается в конкретный узел? - PullRequest
0 голосов
/ 25 сентября 2018

пример:

если пользователь является администратором, а не компанией, я хочу, чтобы у узла ролей было только admin: true (и я не хочу, чтобы другой ребенок был с компанией: false) или еслипользователь - компания, правда (не админ: ложь)

{
// BAD
{
    "roles": {
        "$key": {
            "admin": true,   // or admin: false
            "company": false // or company: true
        }
    }
}
// GOOD (but how to make?)
{
    "roles": {
        "$key": {
            "admin": true, // or company: true
        }
    }
}

}

1 Ответ

0 голосов
/ 25 сентября 2018

Вам нужно будет добавить правило перехвата, чтобы отклонить несопоставленные дочерние узлы:

{
  "rules": {
    "roles": {
      "$key": {
        "admin": {
          ".validate": "newData.isBoolean()"
        },
        "$other": {
          ".validate": false
        }
      }
    }
}

Таким образом, с указанными выше правилами каждое role может иметь только свойство admin с логическим значением.значение.Если клиент попытается написать какие-либо другие свойства, эта запись будет отклонена.

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