Использование Fetch иногда приводит к ошибке типа, потому что href для фотографии не определен - PullRequest
0 голосов
/ 18 марта 2020

Я строю сайт недвижимости и получаю информацию от API. Я делаю это

fetch(
        `https://realtor.p.rapidapi.com/properties/detail?listing_id=${ids.listId}&prop_status=${ids.propStatus}&property_id=${ids.propId}`,
        {
          method: "GET",
          headers: {
            "x-rapidapi-host": "realtor.p.rapidapi.com",
            "x-rapidapi-key":
              "xxxxxxxxxx"
          }
        }
      )
        .then(response => {
          const json = response.json();
          return json;
        })
        .then(json =>
          setDetails({
            photos: json.listing.photos.map(photo => photo.href),
            propertyType: json.listing.raw_prop_type,
            price: json.listing.price,
            beds: json.listing.beds,
            baths: json.listing.baths,
            sqrft: json.listing.sqft,
            yearBuilt: json.listing.year_built,
            listingAgent: json.listing.agent.name,
            email: json.listing.agent.email,
            photoCentered: json.listing.agent.photo.href,
            description: json.listing.description,
            loanAmount: json.listing.mortgage.estimate.loan_amount,
            rate: json.listing.mortgage.estimate.rate,
            term: json.listing.mortgage.estimate.term,
            monthlyPayment: json.listing.mortgage.estimate.monthly_payment,
            principle_interest:
              json.listing.mortgage.estimate.principle_and_interest,
            monthPropertyTax:
              json.listing.mortgage.estimate.monthly_property_taxes,
            monthlyHomeInsurance:
              json.listing.mortgage.estimate.monthly_home_insurance,
            totalPayment: json.listing.mortgage.estimate.total_payment,
            downPayment: json.listing.mortgage.estimate.down_payment,
            listingDateValue:
              json.listing.client_display_text.listing_date_value,
            addressNeighborhood:
              json.listing.client_display_text.address_with_neighborhood,
            propertyDisplayName:
              json.listing.client_display_text.prop_type_display_name
          })
        )
        .catch(err => {
          console.log(err);
        });

Проблема в том, что иногда фотография риэлторов имеет неопределенный href. когда это происходит, никакие другие данные не поступают. Есть ли способ поймать это так, что если это значение не определено, я все еще могу получить все остальные данные?

1 Ответ

0 голосов
/ 18 марта 2020

Я бы порекомендовал, чтобы при отображении массива фотографий вы проверяли неопределенное значение

photos: json.listing.photos.map(photo =>{
   if(typeof photo.href === 'undefined'){
      return '';
   }
   return photo.href;
}),

Вместо пустой строки вы также могли заменить изображение по умолчанию

...