如何使用@ngrx DB保存集合中的单个项目

时间:2017-05-01 03:44:00

标签: rxjs observable ngrx ngrx-effects

我有以下@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));
    });

1 个答案:

答案 0 :(得分:1)

尝试

 Observable.from(products as IProduct[])
  .switchMap(product=> this.db.insert('products', [{ product }]))
  .map(() => new ProductDBActions.ProductAddedSuccessAction(true));