AngularFire 2 "child_added" 返回所有孩子
AngularFire 2 "child_added" returning all childs
我很难理解 angularfire2 中的 "child_added"
。
根据文档,"child_added"
,第一次应该 return 所有 children,然后只听新的 children 添加到那个特定的数据库节点。
用我的代码,我第一次得到所有 children 的预期。问题是当我向 userinfo
节点添加一个新的 child 时,我仍然得到所有 children (包括新添加的)。
这是否意味着每次添加新的 child 时 "child_added"
实际上正在下载所有 children?
我的数据库结构
.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
时您都会 return 创建一个新列表,因此 child_added
事件将针对该列表中的每个用户触发。
如果您只想在第一次触发所有用户并在之后进行更改,您应该只创建一次列表,然后 return 从那里开始:
var usersList;
constructor(private firebaseApp: AngularFireDatabase) {}
getUsers(){
if (!this.usersList) {
this.usersList = this.firebaseApp.list('userinfo/')
}
return this.usersList;
}
我很难理解 angularfire2 中的 "child_added"
。
根据文档,"child_added"
,第一次应该 return 所有 children,然后只听新的 children 添加到那个特定的数据库节点。
用我的代码,我第一次得到所有 children 的预期。问题是当我向 userinfo
节点添加一个新的 child 时,我仍然得到所有 children (包括新添加的)。
这是否意味着每次添加新的 child 时 "child_added"
实际上正在下载所有 children?
我的数据库结构
.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
时您都会 return 创建一个新列表,因此 child_added
事件将针对该列表中的每个用户触发。
如果您只想在第一次触发所有用户并在之后进行更改,您应该只创建一次列表,然后 return 从那里开始:
var usersList;
constructor(private firebaseApp: AngularFireDatabase) {}
getUsers(){
if (!this.usersList) {
this.usersList = this.firebaseApp.list('userinfo/')
}
return this.usersList;
}