我有以下@ngrx
效果,在搜索完成时会触发。 SEARCH_COMPLETE
事件会发出集合的产品。
我想将集合中的每个产品保存到IndexedDB,而不是将整个集合保存为单个值。为此,我从使用Observable
DB observable的产品中创建了一个新的@ngrx
。我也必须使用subscribe
调用才能使其正常工作。
我的问题是,这是正确的方法吗?或者,如果不使用subscribe
方法,它是更好的方法吗?
@Effect()
addProductsToDB$: Observable<Action> = this.actions$
.ofType(ProductsSearchActions.ActionTypes.SEARCH_COMPLETE)
.map((action: ProductsSearchActions.SearchCompleteAction) => action.payload)
.switchMap(products => {
return Observable.from(products as IProduct[])
.do(product => {
this.db.insert('products', [{ product }])
.subscribe();
})
.map(() => new ProductDBActions.ProductAddedSuccessAction(true));
});
答案 0 :(得分:1)
尝试
Observable.from(products as IProduct[])
.switchMap(product=> this.db.insert('products', [{ product }]))
.map(() => new ProductDBActions.ProductAddedSuccessAction(true));