我很难理解angularfire2中的"child_added"
。
根据文档,"child_added"
应该第一次返回所有子节点,然后仅侦听添加到该特定db节点的新子节点。
使用我的代码,我第一次按预期得到所有孩子。问题是,当我向userinfo
节点添加新的子代时,我仍然会获得所有的子代(包括新添加的子代)。
这是否意味着"child_added"
实际上是在每次添加新孩子时都下载所有孩子?
我的数据库结构
.ts代码(相关部分)
ngOnInit(){
this.userService.getUsers().snapshotChanges(['child_added'])
.subscribe(users => {
users.forEach(user=> {
console.log(user.key)
})
})
}
服务(相关部分)
constructor(private firebaseApp: AngularFireDatabase) {}
getUsers(){
return this.firebaseApp.list('userinfo/')
}
提前谢谢
答案 0 :(得分:1)
由于每次调用getUsers
时都会返回一个新列表,因此child_added
事件将触发该列表中的每个用户。
如果您只想在第一时间触发所有用户,然后进行更改,则应该只创建一次列表,然后从那里返回:
var usersList;
constructor(private firebaseApp: AngularFireDatabase) {}
getUsers(){
if (!this.usersList) {
this.usersList = this.firebaseApp.list('userinfo/')
}
return this.usersList;
}