2015-02-12 44 views
0

我是firebase的新手,嘗試使用$ asObject作爲angulerFire文檔。基本上,我有以下配置文件。我使用$ asObject來更新電子郵件。但是,當我使用$ save()時,它僅用電子郵件替換整個配置文件,而不是將它推到列表的末尾,即它像set()而不是push()那樣工作。它是如何工作的?我怎麼只推?

對象

{profiles: 
{peterpan: 
{name:"Peter Trudy", dob:"7th March"} 
} 
} 

我點擊功能:

$scope.angularObject = function(){ 
      var syncProfile = $firebase(ref.child("profiles").child("peterpan")); 
      var profileObject = syncProfile.$asObject(); 
      profileObject.email= "[email protected]"; 
      profileObject.$save(); 
     }; 
+0

$ asObject用於您試圖將其用作集合的單個記錄(即對象)。這就是$ asArray()的目的,並且有一個[整個指南](https://www.firebase.com/docs/web/libraries/angular/guide.html)致力於教授這些概念。 – Kato 2015-02-13 17:08:27

回答

0

您正在尋找$update

syncProfile.$update({ "email": "[email protected]" }); 

注意$update只在$firebase可用的,而不是在FirebaseObject你從回來。這是因爲$asObject實際上意味着直接綁定到角度範圍的對象。您不希望在自己的代碼中執行更新。順便說一句:如果你的代碼的其他部分以類似的方式使用AngularFire,你可以考慮直接使用AngularFire並使用Firebase's JavaScript SDK。使用起來要簡單得多,因爲它不需要在Firebase和Angular的工作方式之間進行調解。

+0

感謝您的澄清,我也100%同意SDK方法,看起來更簡單! – 2015-02-12 20:39:34

+1

請注意,這裏的區別在於是否將數據綁定到視圖/ DOM中。 AngularFire非常適合綁定並處理大量樣板和同步邊界案例。 SDK級別的操作對於簡單寫入和單向操作非常理想。 – Kato 2015-02-13 17:09:22