1
这是一个工厂中的一个方法:DataSnapshot.val()不返回处理值立即
kbUser.getCurrentUserDetails = function(){
return $rootScope.ref.child("user/" + firebase.auth().currentUser.uid).once('value', function(snap){
return snap.val();
});
}
我称之为控制器这种方法是这样的:
return kbUser.getCurrentUserDetails().then(function(details){
// Here I need to do .val() once again
for (var attrname in details.val()) { kbUser.userObject.details[attrname] = details.val()[attrname]; }
kbUser.copyFirebaseDataToUser(firebaseUser).then(function(){
return true;
});
});
这是什么我得到返回:details = W {A: P, W: U, g: ve}
,这不符合我的数据库。
当我在这里读取details
变量时,我必须再执行details.val()
再次以从我的数据库中获取预期的JSON对象。我不明白为什么snap.val()
的结果没有在方法中返回,而只是'原始'firebase datasnapshot snap
。有人知道这是为什么发生?
假设工厂安装正确。
我实际上已经这么做了。我在我的第一篇文章中添加了我称之为函数的实际方式。 –