Firebase:如何在使用 angularFire 进行身份验证后获取对象的 $id
Firebase: How to get the $id of an object after I authenticate using angularFire
Firebase 具有 $onAuth 方法,用于侦听客户端身份验证状态的更改。如果客户端通过身份验证,回调将传递一个包含 uid 的对象。
这是我的问题:
基于这个uid,我怎样才能得到这个对象的$id。
这是我的数据在 firebase 中的样子:
profile {
-K2a7k9GXodDriEZrM3f {
email: "ale@aol.com"
gravatar: "https://www.gravatar.com/avatar/1d52da55055f0c8..."
uid: "3f9e0d53-4e61-472c-8222-7fc9f663969e"
name: "ale"
}
}
我正在使用
auth.$onAuth(function (authData) {
if (authData) {
authData.profile = //here I want the $id of the object
}
})
我对 authData 响应所能做的就是使用以下方法获取对象的 uid:
$firebaseObject(ref.child('profile').child(authData.uid));
此 authData 不包含对象的 $id(即 -K2a7k9GXodDriEZrM3f)。这就是我正在寻找的,以便获得用户的信息。有没有办法做到这一点?
谢谢。
如果一个对象有一个天然的唯一ID,您通常应该将该对象存储在该ID 下。在这些情况下使用推送 ID 没有任何价值,只会使事情复杂化。
大多数使用 Firebase 的开发人员都按照 the "Storing User Data" section in the documentation 的说明进行操作:他们按用户的 uid 存储用户。如果您遵循该指南,您可以找到 authData.uid
.
的密钥
如果您决定坚持当前课程,您可以通过以下方式找到用户的密钥:
ref.child('profile').orderByChild('uid').equalTo(authData.uid).once('child_added', function(snapshot) {
console.log(snapshot.key());
});
但是您将使数据库更难找到您的用户,从而限制您应用的可扩展性。
Firebase 具有 $onAuth 方法,用于侦听客户端身份验证状态的更改。如果客户端通过身份验证,回调将传递一个包含 uid 的对象。 这是我的问题: 基于这个uid,我怎样才能得到这个对象的$id。
这是我的数据在 firebase 中的样子:
profile {
-K2a7k9GXodDriEZrM3f {
email: "ale@aol.com"
gravatar: "https://www.gravatar.com/avatar/1d52da55055f0c8..."
uid: "3f9e0d53-4e61-472c-8222-7fc9f663969e"
name: "ale"
}
}
我正在使用
auth.$onAuth(function (authData) {
if (authData) {
authData.profile = //here I want the $id of the object
}
})
我对 authData 响应所能做的就是使用以下方法获取对象的 uid:
$firebaseObject(ref.child('profile').child(authData.uid));
此 authData 不包含对象的 $id(即 -K2a7k9GXodDriEZrM3f)。这就是我正在寻找的,以便获得用户的信息。有没有办法做到这一点?
谢谢。
如果一个对象有一个天然的唯一ID,您通常应该将该对象存储在该ID 下。在这些情况下使用推送 ID 没有任何价值,只会使事情复杂化。
大多数使用 Firebase 的开发人员都按照 the "Storing User Data" section in the documentation 的说明进行操作:他们按用户的 uid 存储用户。如果您遵循该指南,您可以找到 authData.uid
.
如果您决定坚持当前课程,您可以通过以下方式找到用户的密钥:
ref.child('profile').orderByChild('uid').equalTo(authData.uid).once('child_added', function(snapshot) {
console.log(snapshot.key());
});
但是您将使数据库更难找到您的用户,从而限制您应用的可扩展性。