Ошибка проверки длины правил Firebase

Я некоторое время работал с firebase, и мне это нравится, но сегодня я работаю над правилами безопасности, и я получаю сообщение об ошибке с симулятором, мой код выглядит следующим образом:

    {
  "rules": {

    "users":{
       "$uid":{

        ".read": "auth.uid != null",
        ".write": "auth.uid != null",

         ".validate":"newData.child('profile').child('userName').isString()&& newData.val().length < 15"
      }
    }  
  }
}

Ошибка появляется только тогда, когда я добавляю проверку длины. Когда я делаю:

{
  "rules": {

    "users":{
       "$uid":{

        ".read": "auth.uid != null",
        ".write": "auth.uid != null",

         ".validate":"newData.child('profile').child('userName').isString()"
      }
    }  
  }
}

Работает нормально, есть идеи, почему это происходит, я прочитал документацию по: https://firebase.google.com/docs/database/security/securing-data и многие другие примеры, но я никак не могу найти ошибку. Большое спасибо за совет и удачного кодирования.


person Luis Cerv    schedule 09.04.2017    source источник


Ответы (2)


Вы можете добавить подобную проверку в свое поле, как в этом примере.

{
  "rules": {
    "users": {
      "$user_id": {
        // grants write access to the owner of this user account
        // whose uid must exactly match the key ($user_id)
        ".write": "$user_id === auth.uid",
        ".read" : "$user_id === auth.uid",
        "familyName" : ".validate": "newData.isString() && newData.val().length > 1 && newData.val().length < 100",
        "givenName" : ".validate": "newData.isString() && newData.val().length > 1 && newData.val().length < 100",
        "age" : ".validate": "newData.isNumber() && newData.val() > 13 && newData.val() < 110",
        "email": {
          // an email is only allowed in the profile if it matches
          // the auth token's email account (for Google or password auth)
          ".validate": "newData.val() === auth.email"
        }
      }
    }
  }
}
person Dinesh Katwal    schedule 09.04.2017

Хорошо, я решил правильный синтаксис:

    {
  "rules": {

    "users":{
       "$uid":{

        ".read": "auth.uid != null",
        ".write": "auth.uid != null",

         ".validate":"newData.child('profile').child('userName').isString()&& newData.val().length < 15"
      }
    }  
  }
}
person Luis Cerv    schedule 09.04.2017