繁体   English   中英

打破Javascript的每个功能

[英]break from each function of Javascript

在仔细阅读之前,请不要标记重复或给出负面标记。

在阅读所有文档后,从Mongodb光标函数的.each函数中断,并继续进行逻辑。 我知道每个循环都没有break语句。

我在Mongodb中循环遍历每个文档并在完成后我想做进一步的逻辑。 如果我给出“返回”声明,它将使我失去功能。 我不想失去功能。

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

问题: - 我想遍历每个文档并在循环之后我想继续我的代码。 希望这个必须有解决方案。 仅需要一些指导。

我不熟悉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();
           }
       );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM