2016-06-14 8 views
0

許可されたプロパティのルールはどのように設定しますか?私は作成され、最後に更新されたプロパティは、ユーザーのために設定できるようにしたい。私は変数を使用して不特定の値をキャッチしようとしましたが、これによりpermission_deniedエラーが発生します。私はその値として作成または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()" 
       } 
      }, 
     }, 

失敗した書き込みアクション:uidcreatedlastUpdated

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

これらのルールでは失敗し、成功したい書き込みアクションを表示できますか? –

+0

VARのuserObj = { \t \t UID:ユーザ[ 'UID']、作成 \t \t:新しい日付()getTime()、 \t \t lastUpdated:新しいDate()getTime() \t} \tデータベース.ref( 'u /' + user ['uid'])。set(userObj); –

答えて

0

あなたはノードへの3つのプロパティを追加しています。セキュリティルールでは、createdlastUpdatedしか許可されていません。私はまた、サーバーがタイムスタンプを決定し、両方の値ことを保証する、回ユーザーServerValue.TIMESTAMPを検討したい

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

uidはすでにキーとして使用されていることを、書き込みがおそらくあるべき考える

同じになります。

+0

上と下!あなたの助けとサーバーのタイムスタンプへの参照をありがとう! –

関連する問題