2015-01-26 18 views
0

我在angular應用中使用angularfire作爲後端,但在提取剛創建的最後一個帳戶的用戶ID 時需要幫助。獲取已創建用戶的用戶ID

下面是來自數據庫中「登錄和身份驗證」部分的圖像,這是用戶標識所在的位置。

userid image

這是創建一個新用戶,用電子郵件並且用戶經由註冊表單中輸入密碼的功能。 (user是來自在此函數之前運行的驗證函數的對象)。

$scope.registerNewUser = function(user) { 

    var ref = new Firebase("https://pie-shop.firebaseio.com/"); 
     ref.createUser({ 
      email : user.email, 
      password : user.password 
     }, function(error) { 
      if (error === null) { 
       $('#error-message').show().html('Success!').css({color: 'limegreen'}); 
      } 
      else { 
       $('#error-message').show() 
       .html('Something went wrong when trying to create your account, please try again later') 
       .css({color: 'red'}); 
      } 
     }); 
}, 
$scope.storeUserInfo = function(user, userID) { 

    var newUser = new Firebase('https://pie-shop.firebaseio.com/' + userID); 
} 

所以我需要做的是,最好在function(error) if語句,就是讓新創建的帳戶的用戶ID和調用storeUserInfo功能與用戶ID作爲參數,這樣我可以用它存儲用戶輸入的其他信息。

通過簡單地使用$push存儲在數據庫中的信息將不會允許我的用戶ID與key匹配來獲取相應的信息,因爲火力地堡推數據存入數據庫時​​生成唯一鍵。 (或者,即使使用push,是否還有一個聰明的方法?讓我知道是否是這種情況)。

+0

不要在控制器中做DOM操作! – 2015-01-26 18:28:06

+0

我稍後會改變它。 – Chrillewoodz 2015-01-26 18:30:37

回答

3

Firebase docscreateUser

的onComplete 功能

的回調函數的用戶帳戶已創建時將被調用。失敗時,第一個參數將是一個Error對象,指示失敗,並帶有機器可讀的代碼屬性。成功時,第一個參數爲空,第二個參數將是一個包含新建用戶屬性的對象,包括uid

(重點煤礦)

所以,這樣做:

var ref = new Firebase("https://pie-shop.firebaseio.com/"); 
ref.createUser({ 
    email : user.email, 
    password : user.password 
}, function(error, user) { 
    if (error === null) { 
     console.log(user); 
    } 
    else { 
     // deal with error 
    } 
}); 
+2

確保您使用的是最新的SDK。這個論點被添加了大約2.1.0。 – Kato 2015-01-26 18:40:34

+0

@Kato感謝您的評論,是在2.0.4所以一開始沒有工作,但現在它:) – Chrillewoodz 2015-01-26 19:18:26

0

在這種tutorial(節:驗證用戶使用的服務),你會做到這一點。您註冊一個用戶並立即登錄他。用戶對象然後被存儲在$scope.user中。您可以通過$scope.user.userId(或console.log查找正確的值)從firebase獲取用戶標識。希望能幫助到你。順便說一句:偉大的教程,學習角和firebase。

+0

收藏本教程,每當我得到時間去通過它,謝謝:) – Chrillewoodz 2015-01-26 19:18:46