2015-02-12 25 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