如何使用 angularFire 防止重复结果

How to prevent duplicate results with angularFire

我有这样的 firebase 数据库:

    "cardsList" : {
            "tok_1BVGrNCM8UWO9kaul5P0MoQa" : {
              "cardHolder" : "John",
              "expMonth" : 12,
              "expYear" : 2020,
              "number" : "42** **** **** **43",
              "pin" : 1234
            },
              "tok_7BTErNCM8UWO9kaul5P0MoQa" : {
              "cardHolder" : "Eliott",
              "expMonth" : 12,
              "expYear" : 2020,
              "number" : "44** **** **** **49",
              "pin" : 1234
            }
}

我使用这个得到数组中每张卡片的结果:

this.firebaseProvider.list('patientList/'+this.profileMember.idPatient+'/cardsList')
    .subscribe(cards=> cards.forEach(card=> {
      console.log(card.number)
      this.cardsList.push({'number': card.number})
      }))

在我的 html 中,我用 :

显示结果
<div *ngFor="let card of cardsList">
{{card.number}}
</div>

问题是每次更新数据库中的一个值时我都会得到重复的结果(例如:carHolder 已更新)

例如: 更新前

42** **** **** **43
44** **** **** **49

更新后

42** **** **** **43
44** **** **** **49
42** **** **** **43

如何防止这种情况?

欢迎任何帮助。

亚历克斯

你可以简单地通过将 observable 转换为 promise 来避免它,如下所示。

import 'rxjs/add/operator/toPromise';

this.firebaseProvider.list('patientList/'+this.profileMember.idPatient+'/cardsList').toPromise().then(cards=> cards.forEach(card=> {
    this.cardsList.push({'number': card.number})
}))