2016-06-24 1 views
0

у меня есть эта схемаfirebase предотвратить ребенка удалять не работает

"Photo": { 
    "$User": { 
    "$Photo": { 
     ".validate": "auth.uid == $User && ((newData.hasChildren(['created', 'updated', 'image', 'title']) && data.val() == null && newData.val() != null) || data.val() != null && newData.val() != null && newData.child('updated').val() != null)", 
     "created": { 
     ".validate": "newData.isNumber() && data.val() == null && newData.val() != null && newData.val() == now" 
     }, 
     "updated": { 
     ".validate": "newData.isNumber() && newData.val() == now" 
     }, 
     "image": { 
     ".validate": "newData.isString() && data.val() == null && newData.val() != null" 
     }, 
     "title": { 
     ".validate": "newData.isString() && newData.val().length > 3" 
     }, 
     "$other": { 
     ".validate": "false" 
     } 
    } 
    } 
} 

если вы видите мое правило VALIDATE

".validate": "auth.uid == $User && ((newData.hasChildren(['created', 'updated', 'image', 'title']) && data.val() == null && newData.val() != null) || data.val() != null && newData.val() != null && newData.child('updated').val() != null)" 

я написать разрешение только для записи и для обновления, но когда я удалить узел я могу удалить его. моя цель - предотвратить удаление. почему это? где ошибка? заранее спасибо

ответ

0

Для этого вы должны использовать правило .write, а не правило .validate. From the docs:

Кроме того, определения достоверности игнорируются, когда данные удаляются (то есть, когда новое записываемое значение равно нулю).

+0

спасибо, что у вас есть причина ..... – DThink