現在、私はFreeCodeCampのバックエンド開発認定を受けています。 Image Search Abstractionマイクロサービス(link)に行きました。私はバックエンドコードとしてNodeとExpressを使用しています。私はRequest libraryでGoogleカスタム検索apiにHTTPリクエストを行い、オブジェクトの配列を除いて返されたデータを利用することができます。私が通いオブジェクトにすべてのデータを入れて書いたコードは次のとおりです。ExpressおよびNode、http呼び出しは、要素が呼び出されたときに未定義の配列を返します。
request(url,function(err,result,body) {
var images = [];
var data = JSON.parse(body);
data.items.forEach(function(val) {
var obj = {
image: val.pagemap.cse_image[0].src,
text: val.snippet,
source: val.link
}
images.push(obj);
})
res.send(images);
私はに実行している問題はval.pagemap.cse_image[0].src
です。私のLocalServerクラッシュため、要求を行った場合:
image: typeof val.pagemap.cse_image[0],
^
TypeError: Cannot read property '0' of undefined
val.pagemap.cse_image
リターン:
image: [
{
src: "http://i1.kym-cdn.com/photos/images/masonry/001/172/636/cfd.gif"
}
],
typeof val.pagemap.cse_image
戻り 'オブジェクト' とArray.isArray(val.pagemap.cse_image)
trueを返します。しかし、最終的に追加されたものはすべて未定義に戻ります。 .length
でも未定義のエラーがスローされます。
配列は配列自体が呼び出されたときに配列になりますが、プロパティの場合は呼び出さないと定義されません。
リクエストしている実際のURLは何ですか?あなたがリンクしたページのものは、 'items'プロパティを含むオブジェクトで返信していないようです。オブジェクトの配列が表示されます。 – mscdex
'https://www.googleapis.com/customsearch/v1?key= {API_KEY}&num = 10&cx = {CSE_ID}&searchtype = image&q = {TERM} ' –