如何使用 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})
}))
我有这样的 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})
}))