スクレイピングされた Web サイト データからオブジェクトを作成する機能があります。オブジェクトは次のようになります。
{
name: 'Object Name',
baseURL: 'http://xyz123.com',
mainImg_select: '#item_image a',
mainImg_ref: 'href',
moreImg_select: '.extra_images',
moreImg_ref: 'href',
one_brand: '',
urls: [],
categories:
[ { name: 'Cat 1',
url: 'http://xyz123.com/category1' },
{ name: 'Cat 2',
url: 'http://xyz123.com/category2' },
{ name: 'Cat 3',
url: 'http://xyz123.com/category3' }
]
}
request
とcheerio
モジュールを使用するいくつかの関数を実行しています。request
関数は、どういうわけか、オブジェクトのプロパティを削除していますcategories
。私が見たオブジェクトをログに記録するとき"categories: undefined"
(そのため、プロパティはまだそこにあり、その内容だけが削除されます.
本当に奇妙なのは、スクリプトによって作成された変数に格納されたオブジェクトを使用している場合にのみ、これが発生することです。オブジェクトを作成してログに記録し、コピーしてコードに直接貼り付けると (上記の を除くvar object123 = {stuff goes here}
)、Node スクリプトは問題なく動作します。
PrepJSON
JSONファイルをオブジェクトに変換するクラスです。これが巨大なコードの壁になるのを避けるために、ここに貼り付けました: http://pastebin.com/Tgx0nnmR
唯一の違いは、prepJSON
関数から返されたオブジェクトを使用していることと、そのオブジェクトを console.logging し、関数を実行し、ログをコピーして変数に入れていることです。すると、魔法のようにスクリプトが機能します。
オブジェクトの残りの部分は、スクリプトによって処理されません。オブジェクトの配列を格納するカテゴリのみです。完全object.categories
を期すために、prepJSON で を作成する方法を次に示します。スクリプトがそれらに触れるのはこれだけです。
storeCats.categories = (function(){
$('.view-Departments .field-content a').each(function(index){
storeCats.categories.push({'name': $(this).text(), 'url': $(this).attr('href')});
if(index == $('.view-Departments .field-content a').length -1) {callback(null);}
})}
)();