Как выполнить несколько команд из саги nestjs? - PullRequest
0 голосов
/ 12 февраля 2019

Я создал сагу, чтобы реагировать на данное событие.В этом случае необходимо выполнить несколько команд.

Моя сага выглядит следующим образом:

@Injectable()
export class SomeSagas {
    public constructor() {}

    onSomeEvent(events$: EventObservable<any>): Observable<ICommand> {
        return events$.ofType(SomeEvent).pipe(
            map((event: SomeEvent) => {
                return of(new SomeCommand(uuid()), new SomeCommand(uuid()));
            }),
        );
    }
}

При отладке я обнаружил, что возникла ошибка «CommandHandler not found исключение!»,Это немного сбивает с толку, потому что в случае, если я возвращаю только один экземпляр SomeCommand, обработчик команд вызывается правильно.

Я что-то пропустил или реализация саги просто не поддерживает выдачу нескольких команд?

1 Ответ

0 голосов
/ 12 февраля 2019

Похоже, я нашел ответ на него - это связано с RxJS:

@Injectable()
export class SomeSagas {
    public constructor() {}

    onSomeEvent(events$: EventObservable<any>): Observable<ICommand> {
        return events$.ofType(SomeEvent).pipe(
            map((event: SomeEvent) => {
                const commands: ICommand[] = [
                  new SomeCommand(uuid()),
                  new SomeCommand(uuid()),
                  new SomeCommand(uuid()),
                ];
                return commands;
            }),
            flatMap(c => c), // piping to flatMap RxJS operator is solving the issue I had
        );
    }
}
...