1
When registering a user, I have to send this json to endpoint:
{
  "email": "[email protected]",
  "firstName": "João",
  "lastName": "Silva",
  "password": "*********",
  "birthday": "2000-01-01"
}
However, I have to perform the validations; for this, I am using the following rules:
{
  "rules": {
    ".read": false,
    ".write": false,
    "users": {
      ".read": true,
      ".write": true,
      "$uid": {
        ".validate": "
            newData.hasChildren(['firstName', 'lastName', 'birthday', 'email', 'password']) &&
            newData.child('birthday').val().matches(/^(19|20)[0-9]{2}\\-(0[1-9]|1[1-2])\\-(0[1-9]|[1-2][0-9]|30)$/i)
        "
      }
    }
  }
}
Now, the problem is: If I try to send a json with fewer keys than those specified by the rules, it won’t be possible. However, if I submit a json containing the keys specified by the rules and other additional keys, then it will add smoothly.
Example:
ERROR
{
  "email": "[email protected]",
  "firstName": "João",
  "lastName": "Silva",
  "password": "*********"
}
SUCCESS
{
    "email": "[email protected]",
    "firstName": "João",
    "lastName": "Silva",
    "password": "*********",
    "birthday": "2000-01-01",
    "nao_previsto": "valor"
 }
Is there any way to validate this json in such a way that: ONLY be inserted into the database if the json sent in the request follows EXACTLY the format (NO INSERT unforeseen keys)?