1

我正在尝试让一个应用程序与 ngrx 存储/效果以及角度和火力一起工作。

我无法理解为什么从服务中提取数据时它不起作用但直接从 Firebase 中提取数据时它确实起作用。我在效果类中只更改了一行。

我知道对 Firebase 的服务调用确实有效,因为我直接在组件中调用它并在页面上显示数据。

但是,当我尝试在 NGRX Effect 中使用相同的服务时,它在调用服务时不起作用,我必须使用 AngularFire2 调用 Firebase。

下面的代码:

不工作

@Effect() pullArrayFromFirebase$ = this.actions$
    .ofType(LOAD_CUSTOMERS_ACTION)
    .switchMap(() => {
      ***return this.customerDataService.getAllCustomers()***
        .switchMap(result =>
          Observable.of({ type: CUSTOMERS_LOADED_ACTION, payload: { customers: result } })
        )

    })

在职的

 @Effect() pullArrayFromFirebase$ = this.actions$
    .ofType(LOAD_CUSTOMERS_ACTION)
    .switchMap(() => {
      ***return this.af.database.list('/customers')***
        .switchMap(result =>
          Observable.of({ type: CUSTOMERS_LOADED_ACTION, payload: { customers: result } })
        )

    })

服务

getAllCustomers(id: any = ''): FirebaseListObservable<CustomerModel[]> {


    return this.af.database.list(this.customersRef, {
      query: {
        orderByChild: 'parentId',
        equalTo: id
      }
    });
  }
4

1 回答 1

0

我刚刚解决了我自己的问题。编码效果的两种方式都完美且相同。

我的服务中只有一个默认的 id = '' ,这使服务不返回任何内容,当我从我的组件调用它时,我传入了一个 ID。

真的很简单——就是只见树木不见森林。

于 2017-03-28T15:39:13.537 回答