我有一个使用Firebase和AngularFire的AngularJS网络应用。我注意到在控制器中,可以从给定的数据库工厂(它返回对所有数据的引用)打印所有数据库数据。但是,当打印比根更深的数据时,该sub_data是未定义的。为什么会这样?
function DatabaseFactory($firebaseObject) {
// Bad practice to get all DB data, but just for purpose of this example
return $firebaseObject(firebase.database().ref());
}
function MyCtrl(DatabaseFactory) {
var data = DatabaseFactory;
console.log(data); // Works correctly - prints all database data, even sub data
console.log(data.user_profile); // Prints 'undefined' in console
}
Firebase中的数据结构是用户和订单的简单JSON结构:
/root
-/ user_profile
-/ user_order
-/ order
console.log(data)
的输出:
FirebaseObject {
$$conf: ...
$id: ...
$priority: ...
user_profile: ...
user_order: ...
order: ...
}
但是,如果我单独打印出每个属性,它就不会打印出任何数据库对象:
var propValue;
for(var propName in data) {
propValue = data[propName];
console.log(propName, propValue);
}
输出:
$$conf
$id
$priority
$save
$remove
$loaded
$ref
$bindTo
$watch
$destroy
$$updated
$$error
$$scopeUpdated
$$notify