NGRX / Angular / Firebase

Я пытаюсь заставить приложение работать с магазином / эффектами ngrx и angular и firebase.

У меня проблемы с пониманием, почему при извлечении данных из службы они не работают, а при извлечении напрямую из firebase они работают. В классе эффектов я изменяю только одну строку.

Я знаю, что сервисный вызов Firebase действительно работает, потому что я вызываю его прямо в компоненте и отображаю данные на странице.

Однако, когда я пытаюсь использовать ту же службу в эффекте NGRX, она не работает при вызове службы, мне приходится вызывать Firebase с помощью AngularFire2.

Код ниже:

Не работает

@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
      }
    });
  }

person ccocker    schedule 28.03.2017    source источник
comment
Я не уверен, поможет ли это с вашей проблемой, но вам лучше написать .ofType(...).switchMap(() => this.customerDataService.getAllCustomers()).map(result => ({ type: CUSTOMERS_LOADED_ACTION, payload: { customers: result } })); в ваших эффектах.   -  person philipooo    schedule 28.03.2017


Ответы (1)


Я просто решил свою проблему. Оба способа кодирования Эффекта работают идеально и одинаково.

У меня просто есть id по умолчанию в моей службе, из-за чего служба ничего не возвращала, когда я вызывал это из своего компонента, я передавал идентификатор.

На самом деле все просто - за деревьями леса просто не было видно.

person ccocker    schedule 28.03.2017