2016-06-14 2 views
0

Как установить правило для разрешенных свойств? Я хочу, чтобы только созданные и последние обновленные свойства могли быть настроены для пользователя. Я попытался использовать переменную, чтобы поймать неуказанные значения, но это дает ошибку разрешения. Я предполагаю, что он анализирует либо созданный, либо lastUpdated как его значение.firebase разрешает устанавливать определенные свойства

"u": { 
      ".read": true, 
      "$uid": { 
       ".write": "$uid === auth.uid", 
       ".validate": "newData.hasChildren(['created','lastUpdated'])", 
       "$other": { 
        ".validate": false 
       }, 
       "created": { 
        ".validate": "newData.isNumber()" 
       }, 
       "lastUpdated": { 
        ".validate": "newData.isNumber()" 
       } 
      }, 
     }, 

Действие пишут, что не удалось:

var userObj = { 
    uid: user['uid'], 
    created: new Date().getTime(), 
    lastUpdated: new Date().getTime() 
} 
database.ref('u/' + user['uid']).set(userObj); 
+0

Можете ли вы показать действие записи, которое не соответствует этим правилам, но что вы хотите добиться успеха? –

+0

вар userObj = { \t \t UID: пользователь [ 'UID'], \t \t создано:. Новый Date() GetTime(), \t \t LastUpdated: новый Дата() GetTime() \t.} \t базы данных .ref ('u /' + user ['uid']). set (userObj); –

ответ

0

Вы хотите добавить три свойства узла: uid, created и lastUpdated. Ваши правила безопасности допускают только created и lastUpdated.

Учитывая, что uid уже используется в качестве ключа, запись, вероятно, следует:

var userObj = { 
    created: new Date().getTime(), 
    lastUpdated: new Date().getTime() 
} 
database.ref('u/' + user['uid']).set(userObj); 

Я бы также рассмотреть вопрос пользователя ServerValue.TIMESTAMP в течение времени, что обеспечивает сервер определяет метку времени и оба значения будет таким же.

+0

Выше и дальше! Спасибо за вашу помощь и ссылку на временные метки серверов! –

Смежные вопросы