angularFire $asObject 不推

angularFire $asObject doesn't push

我是 firebase 的新手,正在尝试使用 angulerFire 文档中的 $asObject。基本上,我的个人资料如下。我使用 $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= "peter@peterpan.com";
            profileObject.$save();
         };

您正在寻找 $update:

syncProfile.$update({ "email": "peter@peterpan.com" });

请注意,$update 仅适用于 $firebase,不适用于您从 $asObject 返回的 FirebaseObject。这样做的原因是 $asObject 实际上是一个直接绑定到 angular 作用域的对象。您不需要在自己的代码中对其执行更新。

顺便说一句:如果您的其余代码以类似方式使用 AngularFire,您可以考虑放弃 AngularFire 并直接使用 Firebase's JavaScript SDK。它使用起来更简单,因为它不需要在 Firebase 和 Angular 的工作方式之间进行调解。