Javascript 错误类型错误:无法读取未定义的属性“db”

Javascript 错误类型错误:无法读取未定义的属性“db”,javascript,ionic2,lodash,angularfire2,Javascript,Ionic2,Lodash,Angularfire2,我试图使用lodash和angularfire2循环遍历一个用户数据数组,但我得到了错误类型错误:无法读取未定义的属性“db” 典型推送阵列 [ 0:user1, 1:user2, 2:user3, ] import { AngularFireDatabase} from 'angularfire2/database'; import { AngularFireAuth } from 'angularfire2/auth';

我试图使用lodash和angularfire2循环遍历一个用户数据数组,但我得到了错误类型错误:无法读取未定义的属性“db”

典型推送阵列 [ 0:user1, 1:user2, 2:user3, ]

            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);      
              });
            }
您需要为回调使用。 在您的案例中,这指的是函数对象而不是类。 在这里:


此外,在使用Typescript/ES时,在迭代中使用lodash是毫无意义的。仅使用akkGroupMember.users.forEach user=>就可以编写更简洁的原始代码。。。
_.forEach(allGroupMember.users,(value) => {
                  let endpoint = this.db.object(`/users/${value}/groups/${allGroupMember.groupUid}`);
                  endpoint.set(true);      
              })