2017-09-04 4 views
1

私は、Yelp APIを使用しています(Yelp API自体はCORS対応ではないため、https://cors-anywhere.herokuapp.com/をプロキシとしてリクエストすることにより)Yelpに似たアプリケーションを作成しようとしています私自身の練習を探します。私は私のブラウザのコンソールに応答を得ることができます。このレスポンスには、検索と一致するビジネスの名前の配列があります。私は.(map)を使って、ビジネス配列をマップしようとしています。しかし、私はCannot read property 'map' of undefinedを得続けます。Yelp API repsonseをマップしようとしています

Yelp APIから受け取った応答は以下のとおりです。ありがとう

また、私のコードを見ているときに心に浮かぶjavascriptに関する他のヒントがある場合は、私がプログラミングのキャリアに非常に早い時期に共有してください。

const Yelp = { 
    getAccessToken: function() { 
    if(accessToken) { 
     return new Promise(resolve => resolve(accessToken)); 
    }; 
    return fetch(accessTokenUrl, { 
     method: 'POST' 
    }).then(response => response.json()).then(jsonResponse => { 
    accessToken = jsonResponse.access_token; 
    }) 
    }, 

    search: function(term,location,sortBy) { 
    return this.getAccessToken().then(() => { 
     const yelpRetrieveUrl = `${corsAnywhereUrl}https://api.yelp.com/v3/businesses/search?term=${term}&location=${location}&sort_by=${sortBy}`; 
     return fetch(yelpRetrieveUrl, { 
     headers: {Authorization: `Bearer ${accessToken}`} 
    }); 
    }).then(jsonResponse => { 
    if(1 > 0){ 
    console.log('true!!!!'); 
    return jsonResponse.businesses.map(business => { 
     return { 
     id: business.id, 
     imageSrc: business.image_url, 
     name: business.name, 
     address: business.location.address1, 
     city: business.location.city, 
     state: business.location.state, 
     zipCode: business.location.zip_code, 
     category: business.categories, 
     rating: business.rating, 
     reviewCount: business.review_count 
     }; 
    }); 
    } else { 
    console.log('FALSE') 
    } 

    }) 
} 

}; 
+0

解答を受け入れることを検討しますか? – Kyon

+0

これを言わせていただきありがとうございます、私は答えを受け入れる必要があることを認識していませんでした。 –

答えて

0
fetch(myRequest).then(function(response) { 
    var contentType = response.headers.get("content-type"); 
    if(contentType && contentType.includes("application/json")) { 
     return response.json(); 
    } 
    throw new TypeError("Oops, we haven't got JSON!"); 
    }) 
    .then(function(json) { /* process your JSON further */ }) 
    .catch(function(error) { console.log(error); }); 

あなたはJavaScriptで処理できる実際のオブジェクトにあなたのJSONデータセットをオンにするjsonResponse#json機能を検索することがあります。

そして、あなたはそれを求め理由:をお約束を使用しているため、今後のエラーを処理するためにPromise#Catch機能を使用しています。異なるブラウザで異なる動作をする可能性があるため、ブラウザで処理させないでください。

おそらく1> 0チェックを削除してください。これは常に真実であるためですが、これはテスト目的のみのためだと思います。

私はあなたを助けてくれることを願っています!私は現在モバイルにいるので、後でコードを追加することがあります。

関連する問題