Карта свойств не существует для типа Observable при попытке преобразовать массив из полученного результата - PullRequest
0 голосов
/ 14 мая 2019

Попытка успешно отфильтровать объекты, используя pluck, а затем преобразовать результат в числа с плавающей запятой, используя функцию numbers ()

см. Код ниже

Фрагмент ответа от бэкэнда (намного больше этого)


[ { devSn: '10000511',
   height: '178',
   age: '46',
   userId: '3',
   weight: '55.9',
   measureDate: '""2016-11-07T02:41:18.000Z""',
   __v: 0 },
 { devSn: '10000511',
   height: '179',
   age: '0',
   userId: '3',
   weight: '57.2',
   measureDate: '""2016-11-09T15:39:57.000Z""',
   __v: 0 } ]

Соответствующий импорт:


import { pluck } from 'rxjs/operators';
import { map } from 'rxjs/operators'; // (shows map not being utilized for some reason, have already installed rxjs compact) 
import { from } from 'rxjs';

код


    this.weightdevicesService.getweightdevicesbypatient(this.userId)
      .subscribe((weightdevices: Weightdevices[]) => {
        this.weightdevices = weightdevices;
      });
    console.log(this.weightdevices);
    const source = from(this.weightdevices); //changes to observable 
    const hfilter = source.pipe(pluck('height')); // pluck to filter out data to [ '55.9', '57.2' ]
    console.log(hfilter);
    const hfilterob = from(hfilter);  // ensures it is observable - this dosent seem to make a difference?
    const weightdata = hfilter.map(Number); // convert  [ '55.9', '57.2' ] to  [ 55.9, 57.2 ]
    console.log(weightdata);

После получения ответа от бэкэнда я попытался использовать функцию pluck () для фильтрации данных в ['55 .9 ', '57 .2']. Затем, используя .map, я попытался преобразовать их в [55.9, 57.2].

Это приводит к ошибке Свойство map не существует для типа Observable <{}>. Я не понимаю в этом случае

1 Ответ

0 голосов
/ 16 мая 2019

Спасибо @cartant Я оглянулся назад и понял, что мой исходный код не нужен, я реализовал решение, обнаружив команды "forEach" и "push":

Инициализировать пустой массив «»» weightdata = []; '' '

позже под

this.weightdevicesService.getweightdevicesbypatient(this.userId)
  .subscribe((weightdevices: Weightdevices[]) => {
    weightdevices.forEach (weightdevices => {
      this.weightdata.push(weightdevices.weight);
    });
    console.log(this.weightdata );

данные этого веса дают результаты [55,9, 57,2]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...