在firebase数据库中使用child获取表会提供同一对象的许多实例

时间:2018-01-01 07:07:27

标签: angularjs firebase firebase-realtime-database

我的API在这里:

 findById(id: string): Promise<any> {
    return this.db.list('/users').$ref.orderByChild('id').equalTo(id)
    .once('value');
  }

它的来电者:

 this.usersService.findById(value)
      .then(snap => {
          snap.forEach(e => {
            console.log(e.val());
          });
      }).catch(err => {
        console.log(err)
      });

在我的数据库中,我只有 2个用户(用户表格不是经过身份验证的用户)。

当我运行我的应用程序(我的Angular 4页面)时,我看到记录了很多相同的对象:

下面:

enter image description here

我的问题是为什么同一个对象(用户)有这么多个实例?它可能会影响性能,我估计是大数字

1 个答案:

答案 0 :(得分:1)

按如下方式更改,

findById(id:string):Observable<User[]>{
     return this.db.list('users',ref => 
     ref.orderByChild('id').equalTo(id)).valueChanges();
}

然后在组件内部

var userlist = this.usersService.findById(value);
if (userlist) {
  userlist.forEach((val) => {

  });
}

并将模型设为user.ts

export class User {
    id: string=null;
    name: string=null;
    ....
    etc
}