我正在使用棱角分明的棱角分明的材料和火焰底座。 我在调试时发现了这个问题。
预期
我的期望是forEach项目进入searchCategory
方法并执行this.categorySubscription = this.storeService.doc$(
路径).subscribe();
但是,现在在我的代码中,forEach一直有效,直到它完成后,执行firestore订阅。
因此,当用户添加类别时,如果服务器中没有类别,则区分新类别。否则,它会区分添加为已存在的类别用户。
过程
过程是,首先,类别被放入类别列表中,并且它与forEach一起使用。当第一个类别进入searchCategory方法并使用firestore查询在服务器上搜索类别时。 在订阅中,我们可以获得一个数据,如果它为空 - 意味着服务器上没有类别 - 或者不是。因此,如果数据为null,那么我将使用添加查询,否则使用更新查询。
如果您提供任何建议或提示,可能会非常有帮助。谢谢。
这是我的代码
this.storeInfo.value['categoryChips'].forEach(category => {
this.searchCategory(category);
}
// ...
searchCategory(category) {
this.categorySubscription = this.storeService.doc$(`categories/${category.name}`).subscribe(
data => {
if (data === null || data === undefined) {
// add a new category
this.addCategory(category);
this.getRelStore(category.name);
}
else {
// update
// this.test2(category, path, data['id']);
// this.categorySubscription.unsubscribe();
// this.categoryNum++;
// this.getRelStore(category.name);
}
}
);
}
//...
//get related stores as an array
getRelStore(name) {
this.categorySubscription.unsubscribe();
this.loadRel = this.storeService.doc$(`categories/${name}/relatedStore/store`).subscribe(
data => {
// there's no related store.
if (data !== null && data !== undefined) {
let tempRelatedStores;
tempRelatedStores = data['name'];
tempRelatedStores.push(this.storeName);
this.addRelStore(name, tempRelatedStores);
} else { // there are related stores already
this.storeService.set(`categories/${name}/relatedStore/store`, {
name: this.storeName
});
}
});
答案 0 :(得分:0)
我用.take(1)
解决了。
我在.take(1)
前添加了subscribe()
。
它发送了一个我期望的项目。