如何绕过唯一 ID 和引用子节点
How to bypass unique ID and reference child nodes
我的 firbase 数据库是这样的:
app
users
-gn4t9u4ut304u9g4
email
uid
如何引用电子邮件和 uid?当我尝试这个时:
$rootScope.dashtype.child('users').orderByChild('uid').equalTo($rootScope.auth.uid).on('value', function(snapshot){
$rootScope.user = snapshot.val();
console.log($rootScope.user);
})
我得到了正确的对象,但唯一 ID 为 root:
Object {-JvaZVrWGvJis0AYocBa: Object}
而且因为这是动态的 属性,我不知道如何引用子对象。我只想能够像这样访问用户字段:$rootScope.user.email 等
由于您请求的是一个值,因此您会得到一个用户列表。它可能只有一个用户,但它仍然是一个列表。
您必须遍历快照才能到达子节点:
$rootScope.dashtype.child('users').orderByChild('uid').equalTo($rootScope.auth.uid).on('value', function(snapshot){
snapshot.forEach(function(userSnapshot) {
$rootScope.user = userSnapshot.val();
console.log($rootScope.user);
});
});
由于列表中只有一个用户,循环只执行一次。
您在这里将常规 Firebase JavaScript 与 AngularFire 混合使用。这意味着您需要通知 AngularJS 您更新了范围,以便它重新呈现视图:
$rootScope.dashtype.child('users').orderByChild('uid').equalTo($rootScope.auth.uid).on('value', function(snapshot){
snapshot.forEach(function(userSnapshot) {
$timeout(function() {
$rootScope.user = userSnapshot.val();
console.log($rootScope.user);
});
});
});
我的 firbase 数据库是这样的:
app
users
-gn4t9u4ut304u9g4
email
uid
如何引用电子邮件和 uid?当我尝试这个时:
$rootScope.dashtype.child('users').orderByChild('uid').equalTo($rootScope.auth.uid).on('value', function(snapshot){
$rootScope.user = snapshot.val();
console.log($rootScope.user);
})
我得到了正确的对象,但唯一 ID 为 root:
Object {-JvaZVrWGvJis0AYocBa: Object}
而且因为这是动态的 属性,我不知道如何引用子对象。我只想能够像这样访问用户字段:$rootScope.user.email 等
由于您请求的是一个值,因此您会得到一个用户列表。它可能只有一个用户,但它仍然是一个列表。
您必须遍历快照才能到达子节点:
$rootScope.dashtype.child('users').orderByChild('uid').equalTo($rootScope.auth.uid).on('value', function(snapshot){
snapshot.forEach(function(userSnapshot) {
$rootScope.user = userSnapshot.val();
console.log($rootScope.user);
});
});
由于列表中只有一个用户,循环只执行一次。
您在这里将常规 Firebase JavaScript 与 AngularFire 混合使用。这意味着您需要通知 AngularJS 您更新了范围,以便它重新呈现视图:
$rootScope.dashtype.child('users').orderByChild('uid').equalTo($rootScope.auth.uid).on('value', function(snapshot){
snapshot.forEach(function(userSnapshot) {
$timeout(function() {
$rootScope.user = userSnapshot.val();
console.log($rootScope.user);
});
});
});