Правила базы данных в реальном времени для формы подписки на рассылку новостей - PullRequest
0 голосов
/ 26 мая 2020

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

Это мои текущие правила:

{
  "rules": {
    "emails": {
       "$uid": {  
         ".write": "!data.exists()",
           "mail" : {
             ".validate": "newData.val().matches(/^.*[@].*[.].*$/)"
           }

       }
     }
   }
}

Это принимает что-то вроде:

firebase.database().ref('emails').push().set({mail: "test@gmail.com"});

и отрицает что-то вроде:

firebase.database().ref('emails').push().set({mail: "test"});

но все еще принимает это:

firebase.database().ref('emails').push().set({test: "test"});

Как я могу это исправить?

1 Ответ

1 голос
/ 26 мая 2020

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

"$uid": {  
  ".write": "!data.exists()",
    "mail" : {
      ".validate": "newData.val().matches(/^.*[@].*[.].*$/)"
    },
    "$other": {
      ".validate": false
    }
}
...