2016-11-17 91 views
0

我試圖在mongodb中保存一個json結構,但我希望獲得循環遍歷此函數時每個項目所具有的遞歸深度(DEPTH)。我怎樣才能做到這一點重用以下功能?:javascript遞歸函數的深度

_.mixin({ 
    importJsonItemsToMongo: function (obj, opt, iterator) { 
     function recurse (json_item) { 
      // console.log(`level ${DEPTH}: ${json_item.name}`); 
      db.collection('json_import_items').insert(json_item); 
      _.each(json_item.child_items, _.importJsonItemsToMongo); 
     }; 
     recurse(obj); 
    } 
}); 
_.each(jsonResponse.child_items, _.importJsonItemsToMongo); 
+1

代碼中的DEPTH是什麼? –

+0

是的,只有DEPTH失蹤! –

+0

沒有。這正是我想要找的 – w3jimmy

回答

1

我不知道怎麼underscore.js沒有工作,但我想,這是可以做到這樣的:

_.mixin({ 
    importJsonItemsToMongo: function (obj, depth) { 
     console.log(`level ${DEPTH}: ${obj.name}`); 

     db.collection('json_import_items').insert(obj); 

     _.each(obj.child_items, function(x) { 
      _.importJsonItemsToMongo(x, depth + 1); 
     }); 
    } 
}); 
_.each(jsonResponse.child_items, function(x) { 
    _.importJsonItemsToMongo(x, 0); 
}); 

我有隻是增加了一個深度參數;並刪除了未使用的參數,如果需要,可以將其添加回去。

+0

這一個工作,謝謝! – w3jimmy

0

嘗試關閉深度。

_.mixin({ 
    importJsonItemsToMongo: function(DEPTH) { 
     return function (obj, opt, iterator) { 
      function recurse (json_item) { 
       // console.log(`level ${DEPTH}: ${json_item.name}`); 
       db.collection('json_import_items').insert(json_item); 
       _.each(json_item.child_items, _.importJsonItemsToMongo(DEPTH + 1)); 
      }; 
      recurse(obj); 
     }; 
    } 
}); 
_.each(jsonResponse.child_items, _.importJsonItemsToMongo(0));