【问题标题】:When to use uid and when to use $id in angularfire何时使用 uid 以及何时在 angularfire 中使用 $id
【发布时间】:2017-03-16 19:30:17
【问题描述】:

$id 存储此记录的键。和 obj.$ref().key 一样

要在 ng-repeat 中的 $firebaseArray 中获取项目的 id,请在该项目上调用 $id。

这两个来自角度火参考: https://github.com/firebase/angularfire/blob/master/docs/reference.md

我的理解是,如果有使用创建的 firebase 对象:

var object = $firebaseObject(objectRef);

那么我可以一直使用 uid。

uid : object.uid

但我看到了 firebase auth 用户与 $id 一起使用的示例。

return Auth.$requireSignIn().then(function (firebaseUser) {
                        return Users.getProfile(firebaseUser.uid).$loaded().then(function (profile) {
               **profile.uid or profile.$id here**

也有可能对象有 uid 但没有 $id (obj.$ref().key)。他们不是一样的吗?是否必须先用 $loaded() 加载对象才能使用 $id 或 uid?

问候

【问题讨论】:

    标签: firebase-realtime-database firebase-authentication angularfire


    【解决方案1】:

    您似乎混淆了两个概念:

    • AngularFire 对象的object.$id 包含该对象在 Firebase 数据库中的键。

    • 在 Firebase 术语中,firebaseUser.uid 是 Firebase 身份验证用户的标识。

    通常将您的 Firebase 身份验证用户存储在他们的uid 下的数据库中,在这种情况下,user.$id 将是他们的uid。但它们本质上仍然是不同的东西。

    Users
       uid1
          displayName: "makkasi"
       uid2
          displayName: "Frank van Puffelen"
    

    因此,如果我们查看您共享的代码 sn-p:

    return Auth.$requireSignIn().then(function (firebaseUser) {
        return Users.getProfile(firebaseUser.uid).$loaded().then(function (profile) {
    

    第一行要求用户登录;只有这样,它才会使用已登录的firebaseUser 执行下一行。这是一个常规的 JavaScript 对象 (firebase.User),而不是 AngularFire $firebaseObject

    然后第二行使用firebaseUser.uid 属性(该用户的标识)将用户的配置文件从数据库加载到AngularFire $firebaseObject。加载该配置文件后,它会执行第三行。

    如果用户存储在uid下的数据库中,此时profile.$idfirebaseUser.uid将是相同的值。

    【讨论】:

    • 谢谢。绝对清楚。所以这就是为什么我看不到其他对象(除了用户)与 uid 一起使用。所有其他对象只有 object.$id.
    猜你喜欢
    • 1970-01-01
    • 2014-01-16
    • 2015-09-06
    • 2021-05-31
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多