保存新属性会覆盖firebase对象

ido*_*now 2 angularjs firebase

我正在使用firebase和angular进行测验.在测验结束时,我想使用以下代码将新属性保存到users对象:

function saveTopscore() {
    var ref = new Firebase(CONSTANTS.FIREBASE_URL + 'users/' + User.user.$id + '/');
    var userObject = $firebaseObject(ref);
    userObject.topscore = User.totalCorrect;
    userObject.$save().then(function(ref) {
        console.log("worked");
    }, function(error) {
        console.log(error);
    });
}
Run Code Online (Sandbox Code Playgroud)

它可以工作,但它也会覆盖用户对象的所有属性.因此,对象用于保存,如名称,用户名,电子邮件,密码等,但当我推动topscore时,它成为对象的唯一属性.为什么?

Fra*_*len 8

你为什么在这里使用$firebaseObject?这仅在您将其三向绑定到Angular视图时才有用.如果您使用的是常规JavaScript代码,请坚持使用Firebase的常规JavaScript SDK.

在这种情况下,只需:

ref.update({ topscore: User.totalCorrect });
Run Code Online (Sandbox Code Playgroud)

  • 如果您不打算同步数据以供在视图或服务中使用,我相当肯定API文档没有说使用$ bindTo或任何AngularFire绑定.(提示:我写了) (5认同)