2017-06-01 120 views
0

我使用lodash和angularfire2通過用戶數據的陣列試圖loop屬性「DB」,但我得到錯誤類型錯誤:無法讀取未定義錯誤類型錯誤:無法讀取的不確定

典型推動的特性「DB」陣列 [ 0:用戶1, 1:USER2, 2:用戶3, ]

  import { AngularFireDatabase} from 'angularfire2/database'; 
      import { AngularFireAuth } from 'angularfire2/auth'; 
      import * as firebase from 'firebase/app';; 
      import * as _ from 'lodash'; 

      constructor( 
       private db    : AngularFireDatabase, 
       private afAuth   : AngularFireAuth) {} 




      addGroupChats(allGroupMember) { 
      console.log("allGroupMember", allGroupMember); 

       //this line work well without error 
       console.log("value[0]", allGroupMember.users[0]); 
       //let endpoint = this.db.object(`/users/${allGroupMember.users[0]}/groups/${allGroupMember.groupUid}`); 
       //endpoint.set(true); 

       this line throws ERROR TypeError: Cannot read property 'db' of undefined 
       _.forEach(allGroupMember.users, function(value) { 
        let endpoint = this.db.object(`/users/${value}/groups/${allGroupMember.groupUid}`); 
        endpoint.set(true);  
       }); 
      } 

回答

1

需要使用arrow functions回調。 this引用的是函數對象而不是您的案例中的類。 這裏:

_.forEach(allGroupMember.users,(value) => { 
        let endpoint = this.db.object(`/users/${value}/groups/${allGroupMember.groupUid}`); 
        endpoint.set(true);  
       }) 
+1

另外,在使用時的打字原稿迭代使用lodash的是沒有意義的/ ES原代碼可以寫成更簡潔只是akkGroupMember.users.forEach(用戶=> ...) –

+0

真。 。取決於爲什麼OP已經將lodash包括在第一位.. –

+0

@ChristianBenseler謝謝,我會檢查出來 – netx

相關問題