1

我有以下@ngrx效果,当搜索完成时触发。该SEARCH_COMPLETE事件发出产品集合

我想将集合中的每个产品保存到 IndexedDB,而不是将整个集合保存为单个值。为了实现这一点,我Observable从使用@ngrxDB observable 的产品中创建了一个新的。我不得不使用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));
    });
4

1 回答 1

1

试着做

 Observable.from(products as IProduct[])
  .switchMap(product=> this.db.insert('products', [{ product }]))
  .map(() => new ProductDBActions.ProductAddedSuccessAction(true));
于 2017-05-01T11:13:42.417 回答