2017-03-12 4 views
1

慎重に読む前に、重複したマークを付けたり、マイナスのマークを付けたりしないでください。Javascriptの各機能を解除する

すべての文書を読んだ後にMongodbカーソル機能の各機能から切り離してください。&はさらに論理を続行します。私はループごとにbreak文がないことを知っています。

私はMongodb &で各文書をループしていますが、私はさらなる論理をしたいと思います。私が 'return'ステートメントを与えると、それは私を機能から奪うでしょう。私は機能から外に出たくはありません。

function update(){    
      var resultCursor = dbCollection.find(); 
      resultCursor.each(function(err, result) { 
      if (result == null) 
      { 
      //// I want to break from here & continue to logic further 
      //return false; 

      }; 
      console.log('result for each item is ',result); 

      //Calculate distance for from location if < 1000 meters 
      riderFromLat = reqBody.fromLoc.lat; 
      riderFromLong = reqBody.fromLoc.lng; 

      var fromDistance = geolib.getDistance({latitude: riderFromLat, longitude: riderFromLong }, {latitude: result.fromLoc.coordinates[0], longitude: result.fromLoc.coordinates[1]}); 

     console.log(' From Distance is ',fromDistance); 
      if (fromDistance < 1000) 
      { 

      riderToLat = reqBody.toLoc.lat; 
      riderToLong = reqBody.toLoc.lng; 

      var toDistance = geolib.getDistance({latitude: riderToLat, longitude: riderToLong }, {latitude: result.toLoc.coordinates[0], longitude: result.toLoc.coordinates[1]}); 
       console.log(' To Distance is ',toDistance); 

       if (toDistance <= 1000) 
       { 
        jsonResultData.finalMatchDriverList.push(result); 
       } 
      } 
     }); 


     // Want to continue with logic further here over jsonResultData 
console.log ('jsonResultData.finalMatchDriverList.length',jsonResultData.finalMatchDriverList.length); 
} 

質問: - 私はさらに私のコードを継続したいループ後に各文書&をループにしたいです。うまくいけば、これには解決策がなければなりません。それだけのガイダンスが必要です。

+0

機能を追加します。これは 'update()'からjsonの結果、すなわち 'processResult(jsonResultData);'で呼び出されますか? – Cyclonecode

+0

意図は、すべてのMongodbの読書データベースを終了した後に文書から出ることです。ちょうど私たちはそれのための簡単な解決策を持っていない驚いている。 –

+0

'Array#every'を使うと" break "にfalseが返されます –

答えて

0

私はMongoDBのに慣れていないことだし、それを行うためのより良い方法があるかどう判断する(そしておそらくそこにある)ことはできませんが、あなたの説明与えられ、これが何をしたい可能性がある:

function update(){ 
     var results = []; 

     function doThisAfterwards() { 
     // you can access results here; 
     } 

     var resultCursor = dbCollection.find(); 
     resultCursor.each(function(err, result) { 
      if(result) { 
       // do what you want 
       results.push(result); 
      } 
      else { 
       doThisAfterwards(); 
      } 
     ); 
} 
+0

あなたの解決策はすばらしい回避策を提供していますが、それは非常に高く評価されていますが、私が探しているものを正確には提供していないため、 –