проблема с массивом httpclient запроса в Angular - PullRequest
0 голосов
/ 10 мая 2019

Я использую запрос httpclient для получения данных из WordPress API, и в ответ я получаю сообщение об ошибке. Кажется, проблема с массивом в ответ. вот какой код я использую

getTetimonialData() {
    this.http.get<{ testimonials: any }>(BASE_URL + '/testimonial/').pipe( map( testimonialsData => {
      // return testimonialsData;
      return {
        testimonials: testimonialsData.testimonials.map(testData => {
          return {
            id: testData.id,
            date: testData.date,
            slug: testData.slug,
            title: {
              rendered: testData.title.rendered,
            },
            yoast_meta: {
              yoast_wpseo_title: testData.yoast_meta.yoast_wpseo_title,
              yoast_wpseo_metadesc: testData.yoast_meta.yoast_wpseo_metadesc,
              yoast_wpseo_canonical: testData.yoast_meta.yoast_wpseo_canonical,
            },
            acf: {
              video_url: testData.acf.video_url,
              video_image: {
                url: testData.acf.video_image.url,
                alt: testData.acf.video_image.alt,
              }
            }
          };
        })
      };
    })).subscribe(transformData => {
      this.testimonials = transformData.testimonials;
      console.log(this.testimonials);
      this.testimonialFetch.next(this.testimonials);
    });
  }

а вот и ошибка

ERROR TypeError: Cannot read property 'map' of undefined

Я даже пытался использовать tesimonialData.map, так как ответ уже есть в массиве, но это также показывает, что тип свидетельства запрещен.

Эта ошибка относится к строке, в которой я перебираю данные, а не с помощью функции карты rxjs.

так я что-то не так делаю?

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Ваш тип запроса GET неверный.Ниже приведена фотография с URL, которым вы поделились в комментариях.

API Response

Вместо this.http.get<{ testimonials: any }>... он должен иметь тип this.http.get<any[]>... с момента ответаэто список отзывов, а не объект со свойством testimonials.В идеале вы должны использовать интерфейс для обеспечения безопасности типов, поэтому вместо any[] это может быть ServerTestimonial[].

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

Можете ли вы также ответить на этот вопрос Выпуск углового резольвера

Извините, у меня нет репутации, чтобы комментировать

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