当object传递给exports函数时,脚本失败。当同一个对象直接传递给函数时,它会通过

时间:2013-06-21 15:39:38

标签: javascript node.js

我有一个从抓取的网站数据创建对象的功能。对象看起来像这样:

{ 
  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脚本运行正常。

PrepJSON是一个将JSON文件转换为对象的类。为了避免这成为一个巨大的代码墙,我在这里粘贴它:http://pastebin.com/Tgx0nnmR

This doesn’t work

This works

唯一的区别是,我在prepJSON函数中使用了一个返回的对象,在另一个我是console.logging该对象,运行该函数,复制日志,将其放入变量 - 然后神奇地说脚本可以工作。

脚本不会触及对象的其余部分 - 只有存储对象数组的类别。为了完整起见,以下是在prepJSON中创建object.categories的方法。这是脚本触及它们的唯一时间:

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);} 
    })}
)();

0 个答案:

没有答案