2016-11-03 47 views
0

$ id存儲此記錄的關鍵。與obj。$ ref()相同key

要在ng-repeat中獲取$ firebaseArray中的項目的id,請在該項目上調用$ id。

這兩個是從角火參考: https://github.com/firebase/angularfire/blob/master/docs/reference.md

我的理解是,如果沒有與創建火力對象:

var object = $firebaseObject(objectRef); 

然後我可以使用UID始終。

uid : object.uid 

但我看到了firebase身份驗證用戶與$ 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()鍵)。他們不是一回事嗎?該對象是否必須先用$ loaded()加載才能使用$ id或uid?

問候

回答

2

你似乎混淆了兩個概念:

  • 的AngularFire對象的object.$id包含了火力地堡數據庫該對象的關鍵。

  • a Firefox Firebase中的firebaseUser.uid是Firebase身份驗證用戶的標識。

是很常見的在數據庫中的火力地堡認證用戶存儲在他們uid,在這種情況下user.$id將是他們uid。但他們本質上仍然是不同的東西。

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

所以,如果你看看我們的代碼片斷您分享:

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將是相同的值。

+0

謝謝。絕對清楚。所以這就是爲什麼我沒有看到其他對象(用戶除外)與uid一起使用。所有其他對象只有對象。$ id。 – makkasi

相關問題