0

スクレイピングされた 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' }
   ] 
}

requestcheerioモジュールを使用するいくつかの関数を実行しています。request関数は、どういうわけか、オブジェクトのプロパティを削除していますcategories。私が見たオブジェクトをログに記録するとき"categories: undefined"(そのため、プロパティはまだそこにあり、その内容だけが削除されます.

本当に奇妙なのは、スクリプトによって作成された変数に格納されたオブジェクトを使用している場合にのみ、これが発生することです。オブジェクトを作成してログに記録し、コピーしてコードに直接貼り付けると (上記の を除くvar object123 = {stuff goes here})、Node スクリプトは問題なく動作します。

PrepJSONJSONファイルをオブジェクトに変換するクラスです。これが巨大なコードの壁になるのを避けるために、ここに貼り付けました: 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);} 
    })}
)();
4

0 に答える 0