firebase - AngularFire 2“child_added”返回所有孩子
问题描述
我很难理解"child_added"
来自 angularfire2 的内容。
根据文档,"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/')
}
先感谢您
解决方案
由于您每次getUsers
调用时都会返回一个新列表,因此该child_added
事件将在该列表中的每个用户上触发。
如果您只想在第一次触发所有用户并在之后获得更改,您可能应该只创建一次列表并从那里返回它:
var usersList;
constructor(private firebaseApp: AngularFireDatabase) {}
getUsers(){
if (!this.usersList) {
this.usersList = this.firebaseApp.list('userinfo/')
}
return this.usersList;
}
推荐阅读
- r - 如何多次将相同的项目附加到向量?
- angular - 如何修复 RouterModule 未定义
- centos7 - Android SDK - 找不到“adb”
- python - 将变量传递给 python 中的 subproccess.call sed 命令
- javascript - 是否可以使用带有另一个 js 变量值的 js setProperty 更改 css 变量?
- sql-server - 如何只选择一列
- r - 将某些年份分配给 R 中的数字
- android - Kotlin 错误无法削弱“valueformelement”中“value”的访问权限“public”
- asp.net-core - AspnetCore RazorPage 返回原始字符串?
- javascript - 如何从 .txt 文件中读取数据并将数据转换为整数?