2017-06-01 115 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

相关问题