2015-04-03 46 views
0

我在使用我的應用程序中的工廠進行身份驗證時遇到了一些麻煩。目標是僅在用戶尚未通過身份驗證時才獲取令牌。當我使用下面的代碼,我得到以下錯誤:在Angular返回對象後無法訪問代碼

Cannot read property 'uid' of null

我不能說,如果這僅僅是一個次要的問題語法或更大的東西。看起來好像沒有任何以var authData開頭的代碼正在被讀取。

(function() { 
    'use strict'; 
    angular.module('firebase.auth', ['firebase', 'firebase.ref']) 

    .factory('Auth', ['$firebaseAuth', 'Ref', function ($firebaseAuth, Ref) { 

     return $firebaseAuth(Ref); 
     var authData = Ref.getAuth(); 
     console.log(authData); 

     if (authData) { 
      console.log('already logged in with ' + authData.uid); 
      } else { 

      return Auth.$authAnonymously({rememberMe: true}).then(showError); 

      function showError(err) { 
       Login.err = err; 
      } 
      } 
     } 
    ]); 
})(); 

angular.module('App') 

    .factory('Projects', function ($firebaseArray, fbURL, Auth, Ref) { 
     var authData = Ref.getAuth(); 
     var ref = new Firebase(fbURL + '/projects/' + authData.uid); 
      return $firebaseArray(ref); 
}) 

回答

1
return $firebaseAuth(Ref); 

It looks like none of the code starting with var authData is being read.

你在你的函數的頂部卡住return語句。這將退出該功能。

+0

謝謝。這是否意味着我需要爲'var authData'開頭的代碼使用新的工廠,還是有更好的方法來完成我的目標? – Ken 2015-04-03 07:29:10

+0

我不完全確定*你的目標是在這裏。你能給出一個關於'$ firebaseAuth'是什麼的背景解釋,以及爲什麼你可能需要像你一樣在頂端返回它? – christopher 2015-04-03 07:36:46

+0

我正在使用[Firebase](http://www.firebase.com)作爲我的後端。 [AngularFire](https://www.firebase.com/docs/web/libraries/angular/guide/user-auth.html)是它的AngularJS庫。所有這些對我來說都是非常新的,但我認爲'$ firebaseAuth'是一個服務,返回的對象包含用於驗證用戶的方法。我想我需要把它放在最上面才能使用getAuth()來檢索當前的身份驗證狀態(以確定用戶是否已經通過身份驗證和匿名身份驗證,如果需要的話)。那有意義嗎? – Ken 2015-04-03 07:54:27