2014-11-04 54 views
0

基於AngularFire documentation我試圖在對象上設置$priority,然後使用$save()更新Firebase上的數據。
我得到的結果是被覆蓋爲空的對象(它是Firebase中的條目)。 這裏是我的代碼

var ref = new Firebase(firebaseListPath); 
    var myList = $firebase(ref).$asArray(); 

    myList.$add({ 
     created: Firebase.ServerValue.TIMESTAMP, 
     user: userId 
    }).then(function(newItemRef){ 
     var newItemObj = $firebase(newItemRef).$asObject(); 
     newItemObj.$priority = userId; 
     newItemObj .$save(); 
    }); 
+0

你可以嘗試'$火力點(REF)$更新(netItemObj $ ID,newItemObj)' ? https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebase-update-key-data。或者直接將'$ priority'或'.priority'傳遞給'$ add',而不是等待承諾完成。 – 2014-11-04 12:03:35

回答

2

嘗試通過優先直接進入$加:

myList.$add({ 
    created: Firebase.ServerValue.TIMESTAMP, 
    user: userId, 
    $priority: userId 
}); 

也沒有理由罵$ asArray和$ asObject在相同的同步數據(它已經同步) 。這可以在你當前的模式下工作,但不必要:

myList.$add({ 
    created: Firebase.ServerValue.TIMESTAMP, 
    user: userId 
}).then(function(newItemRef){ 
    var item = myList.$getRecord(newItemRef.name()); 
    item.$priority = userId; 
    myList.$save(item); 
}); 

但是,在這裏沒有理由使用AngularFire。如果你沒有任何約束力的觀點,那麼你可以簡單地直接撥打電話給裁判:

var ref = new Firebase(firebaseListPath); 
ref.push().setWithPriority({ ... }, userId);