我有这样的firebase db:
"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已更新)
Ex: 在更新之前
42** **** **** **43
44** **** **** **49
更新后
42** **** **** **43
44** **** **** **49
42** **** **** **43
如何防止这种情况?
欢迎任何帮助。
亚历。
答案 0 :(得分:1)
只需将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})
}))