2016-07-25 53 views
1

我學習的火力點,我有以下簡單的規則設置:火力hasChildren在模擬器工作,但不angularFire

{ 
"receiver_id":123, 
"sender_id":"test", 
"timestamp":123 
} 

使用angularFire我:

{ 
    "rules": { 
     ".read": "auth != null", 
     "messages": { 
     ".read": "true", 
     "$conversation_id": { 
      ".write": "newData.hasChildren(['receiver_id','sender_id','timestamp'])" 
     } 
    } 
    } 
} 
在寫入規則通過與模擬器

獲取權限被拒絕(uid被定義):

var dat = { 
     sender_id:uid, 
     receiver_id: uid, 
     timestamp: firebase.database.ServerValue.TIMESTAMP 

}; 
    database.ref('messages/myMessageId').push(dat); 

如果我刪除hasChildren檢查消息被添加到具有適當值的數據庫被填充。是什麼賦予了?

回答

1

Firebase.push()自動創建一個新的唯一ID(類似於數組索引),這樣的結構,你應該讓AngularFire照顧這對你使用database.ref('messages').push(dat)

// will fail because /myMessageId does not contain child sender_id 
database.ref('messages/myMessageId').push(dat); 
{ 
    messages: { 
    myMessageId: { 
     UID: { 
     sender_id: 1, 
     ... 
     } 
    } 
    } 
} 


// will work 
database.ref('messages').push(dat); 
{ 
    messages: { 
    UID: { 
     sender_id: 1, 
     ... 
    } 
    } 
} 
+0

這就是它!謝謝! – RRivera

相關問題