2014-11-04 32 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);