2016-11-17 1 views
0

mongodb에서 json 구조를 저장하려고하는데,이 함수를 반복 할 때 각 항목에있는 재귀 적 깊이 (DEPTH)를 얻고 싶습니다. 나는 다음과 같은 기능?자바 재귀 함수의 깊이

_.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

예, 단지 깊이가 누락되었습니다! –

+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));