Firebase AngularFire使用$ priority和$ save覆盖对象

时间:2014-11-04 02:08:39

标签: angularjs firebase angularfire

根据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();
    });

1 个答案:

答案 0 :(得分:2)

尝试将优先级直接传递给$ add:

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。如果您没有将任何内容绑定到视图,那么您可以直接调用ref:

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