Как мне запретить кому-либо записывать, если его данные не содержат определенного ключа?

#firebase #firebase-realtime-database #firebase-security

#firebase #firebase-realtime-database #firebase-безопасность

Вопрос:

Я новичок в базе данных firebase и хочу добавить правило, которое может запретить кому-либо записывать, если его данные не содержат определенного ключа.

мои правила базы данных firebase: введите описание изображения здесь

.

На этом изображении:

введите описание изображения здесь

1-й ключ содержит только 1 дочерний ключ с именем «sample», а 2-й ключ содержит множество ключей, таких как дни, дата, пользователь, загрузки и т.д.

Возможно ли добавить правило, которое запрещает запись ПЕРВОГО ключа, если он не содержит дочернего ключа с именем «дата»?

Я надеюсь, что кто-нибудь мне поможет, спасибо!

Комментарии:

1. Для дальнейшего использования будет действительно полезно, если вы включите свою структуру данных в вопрос вместо ссылки. Наиболее полезно, если вы можете даже предоставить данные в виде кода для копирования / вставки в post.

2. @Dennis Alund, спасибо за совет, я сделаю это в следующий раз.

Ответ №1:

Да, вы определенно можете создать правило, которое проверяет наличие дочернего ключа.

И есть также языковой инструмент под названием Firebase Bolt, который может упростить написание ваших правил. Это очень помогает, когда вы хотите выполнить более сложные проверки ваших данных.

 {
  "rules": {
    "posts": {
      "$postId": {
        ".validate": "newData.hasChildren(['date'])"
      }
    }
  }
}

  

Комментарии:

1. Здравствуйте, сэр, я действительно новичок в этом, и я не понимаю, что такое «$ postID», должен ли я просто оставить это так в правилах?

2. Ознакомьтесь с документацией о том, как писать правила безопасности.

3. $postId Является шаблоном. Это означает, что правила в соответствии с ним (поэтому .validate здесь) применяются к каждому дочернему узлу posts .

4. Большое спасибо, ребята, за помощь, я благодарен.