Конкат Наблюдаемый - PullRequest
       6

Конкат Наблюдаемый

0 голосов
/ 18 декабря 2018

У меня есть метод, который возвращает массив объектов

Мне нужно отфильтровать его по определенному критерию, а затем создать новый массив объектов, где данные будут преобразованы в другую модель

, а затем вернуть полученный массив, а затем подписаться на него

public getTestWithPare(): Observable<Array<TestModel>> {

    return this.http.getTests().pipe(
        flatMap(rate => rate), // splitting array
        filter(test => !test.isDone),
        map(test => {

            const testPare = new TestModel();
            testPare.key = `${test.id}/${test.name}`;
            if (test.type === 'new') {
                testPare.finish = test.value;
                testPare.show = true;
            } else {
                testPare.start = test.value;
                testPare.hide = true;
            }

            return testPare;
        }),
        concatAll(),
        toArray()
    );
}

после вызова метода, я получаю сообщение об ошибке:

Вы указали недопустимый объект, где потокожидалось.Вы можете предоставить Observable, Promise, Array или Iterable.

Не могу понять, что не так

Я хочу получить массив объектов на выходе

примерно в этом формате: ['key': {key: '1 / t', finish: 7, show: true}, ...]

1 Ответ

0 голосов
/ 18 декабря 2018

Rxjs здесь избыточен (только если у вас большие массивы и вы не хотите обрабатывать его за один раз), методы пользовательских массивов

const testToTestPare = test => {
  /* If you don't need TestMode, create an empty object const testPare = {} */
  const testPare = new TestModel(); 
  testPare.key = `${test.id}/${test.name}`;
  if (test.type === 'new') {
    testPare.finish = test.value;
    testPare.show = true;
  } else {
    testPare.start = test.value;
    testPare.hide = true;
  }
  return testPare;
};


public getTestWithPare(): Observable<Array<TestModel>> {
    return this.http.getTests().pipe(
        map(tests => tests.map(testToTestPare)),
    );
}
...