【发布时间】:2020-06-13 07:58:12
【问题描述】:
我正在使用 firebase firestore,并且我从集合中获取了一组数据,这些数据是我在 for 循环中的快照中获取的。
为了避免多次查询数据库,我创建了数据服务机制来使用本地数组来显示,我正在通过 rxjs 主题行为来处理它。
这里的问题是,如果用户从应用程序中删除了一些文档,我已经从 firebase 中删除了它,然后从本地仍然是它的快照,我们必须手动取消订阅
我知道这样的基本方法..
var unsubscribe = db.collection("cities")
.onSnapshot(function () {});
// ...
// Stop listening to changes
unsubscribe();
这不适用于我的情况,因为我正在像这样在 for 循环中拍摄快照
getSnapShot() {
this.global.currentUser.shortlist.forEach((propertyID: any) => {
this.getSnapShotByID(ID);
});
}
getSnapShotByID(ID) {
// return new Observable((observe: Observer<any>) => {
this.db.collection('properties').doc(propertyID).onSnapshot((snapshot: any) => {
//HERE I AM ADDING PROPERTY IN LOCAL ARRAY
....
}
现在当用户从集合中删除属性时,我必须取消订阅,否则它将继续监听并更改我的本地数组
有什么建议吗?
【问题讨论】:
标签: angular firebase google-cloud-firestore