2016-08-01 1 views
1

Я использую Firebase & iOS и пытаюсь проверить, когда пользователь пытается отправить комментарий.Правило проверки башенки не работает

Вот мои правила:

{ 
    "rules": { 
    "comments": { 
     ".read": true, 
     ".write": "auth.uid != null", 
     "$comment_id": { 
     ".validate": "newData.isString() && newData.val().length < 100" 
     } 
    } 
    } 
} 

Вот моя структура базы данных: enter image description here

Комментарий, который был отправлен успешно был, когда я удалил ".validate" часть. Я также попытался поставить ".validate": "newData.isString() && newData.val().length < 100" вне блока $comment_id, но это все равно привело к сбою.

Несмотря на это, я получаю эту ошибку от тренажера, когда я пытаюсь добавить комментарий: enter image description here

Почему мой ".validate" работает? Что мне не хватает?

ответ

1

Ваш путь данных: /comments/$comment_id/comment. Правило проверки не поддерживает этот последний comment.

{ 
    "rules": { 
    "comments": { 
     ".read": true, 
     ".write": "auth.uid != null", 
     "$comment_id": { 
     "comment": { 
      ".validate": "newData.isString() && newData.val().length < 100" 
     } 
     } 
    } 
    } 
} 

Эти правила будут работать. Но я бы, вероятно, обновил структуру данных, чтобы удалить узел comment, так как он не добавляет никакого значения.