Javascript 错误类型错误:无法读取未定义的属性“db”
我试图使用lodash和angularfire2循环遍历一个用户数据数组,但我得到了错误类型错误:无法读取未定义的属性“db” 典型推送阵列 [ 0:user1, 1:user2, 2:user3, ]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';
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);
})