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;
}