2015-11-08 34 views
0

火力地堡有監聽更改客戶端的認證狀態$ onAuth方法。如果客戶端通過身份驗證,回調將傳遞一個包含uid的對象。 這裏是我的問題: 在此基礎上UID,我怎麼能得到的的$ id此對象。

這是我的數據看起來像在火力點:

profile { 
    -K2a7k9GXodDriEZrM3f { 
     email: "[email protected]" 
     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) 。這就是我所需要的,以便獲得用戶的信息。有沒有一種方法來實現這一目標?

謝謝。

+0

$ id是$ firebaseArray記錄的一個屬性,並且不存在於$ firebaseObject實例中。在你想要一個$ firebaseObject實例的鍵的情況下(不是什麼OP是尋找在這裏),這是一個在OBJ。找到$ REF()鍵()。 – Kato

回答

3

如果一個物體具有天然的唯一的ID,你通常應該在對象存儲ID下。在這些情況下使用推送ID不會增加任何價值,只會使事情變得複雜。

使用火力地堡做作爲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()); 
}); 

但你會使其難以數據庫找到你的用戶,從而限制了可擴展性的應用程序。

+0

這正是我所期待的。我使用了您提供的鏈接來存儲我的用戶數據。非常感謝! –