错误:Firebase.update失败:第一个参数在属性中包含NaN

时间:2014-12-03 07:37:16

标签: angularjs firebase

我正在制作一个允许用户种树的网络应用。当用户施肥树时,属性"肥料"应该增加。然而,该应用程序一直给我错误,因为它已决定"肥料"未定义。

更新评分功能如下:

function updateScore(){
    if (usr!=null){
        var tree = $firebase(new Firebase("https://myapp.firebaseio.com/trees/"+usr.treeid));
        var usrTree = tree.$asObject();
        var data = null;
        if (typeof usrTree.data !== 'undefined'){
            data = usrTree.data;
        }
        console.log(usrTree);
        console.log(usrTree.$id);
        console.log(usrTree.uid);
        console.log(usrTree.fertilizer);
        tree.$update({fertilizer: usrTree.fertilizer+1});
        }
    }
}

所以控制台会给出这些结果:

e {$$conf: Object, $id: "-JcDm0UlYVGFfFAX0GSf", $priority: null, $save: function, $remove: function…}
$$conf: Object
$id: "-JcDm0UlYVGFfFAX0GSf"
$priority: null
fertilizer: 0
level: 0
pesticide: 0
sunshine: 0
uid: "simplelogin:6"
water: 0
__proto__: Object

-JcDm0UlYVGFfFAX0GSf

undefined

undefined

我相信第一个是usrTree对象,第二个是$id,第三个和第四个应该是uidfertilizer但是未定义。但是,在usrTree对象中,uidfertilizer确实按定义显示,并且它们存在于firebase forge中:

我在这做错了什么?我该怎么做才能更新数据?

1 个答案:

答案 0 :(得分:1)

事实证明我需要使用$ loaded。我将代码更改为以下内容,现在可以正常工作。

var tree = $firebase(FirebaseRef.child("trees").child(usr.treeid));
var usrTree = tree.$asObject();
usrTree.$loaded().then(function() {
    tree.$update({fertilizer: usrTree.fertilizer + 1});
}