Javascript 如何在nodejs中优化mongodb查询?
我有一个在nodejs中运行的代码,在其中我必须调用MongoDB查询,该查询具有一些聚合属性,我使用回调调用了它,但主要问题是它没有像我预期的那样工作。就像我想异步运行代码,但它不能像这样工作,我希望一旦MongoDB查询完成,然后调用我的另一个函数,但目前在代码执行之间调用了我的另一个函数,我对这种方法感到非常不安,我需要帮助,请给出解决方案。 这是代码Javascript 如何在nodejs中优化mongodb查询?,javascript,node.js,mongodb,asynchronous,async-await,Javascript,Node.js,Mongodb,Asynchronous,Async Await,我有一个在nodejs中运行的代码,在其中我必须调用MongoDB查询,该查询具有一些聚合属性,我使用回调调用了它,但主要问题是它没有像我预期的那样工作。就像我想异步运行代码,但它不能像这样工作,我希望一旦MongoDB查询完成,然后调用我的另一个函数,但目前在代码执行之间调用了我的另一个函数,我对这种方法感到非常不安,我需要帮助,请给出解决方案。 这是代码 function (done) { var count = 0; Wine
function (done) {
var count = 0;
Wine.distinct("_id", {}).exec(function(err,winesList){
for(var x=0;x < 100;x++){
var currentWineId = winesList[x].toString();
//wineId should not be object
WTHelper.calculateAvgWinePriceAndUpdate(currentWineId, todayDate,'true', function (err, result) {
count++;
console.log("statusReport.totalCount :", count);
})
} done(null, count);
})
}, function (count) {
console.log("prateek totalCount :", count);
}
])
检查输出
statusReport.totalCount : 98
calculateAvgWinePriceAndUpdate: Price Updated for Purchase Date Sat Sep 12 2020
statusReport.totalCount : 99
calculateAvgWinePriceAndUpdate: Price Updated for Purchase Date Sat Sep 12 2020
statusReport.totalCount : 100
calculateAvgWinePriceAndUpdate: Price Updated for Purchase Date Sat Sep 12 2020
如果您的查询与您使用的promise无关,则底部缺少第二个函数。所有这些函数将并行执行您的查询 或者它们是相互关联的,或者您希望一个接一个地执行,那么您可以使用 async Wait方法将以异步方式同步执行db调用。根据的文档,您应该使用exec方法传递回调函数。
statusReport.totalCount : 98
calculateAvgWinePriceAndUpdate: Price Updated for Purchase Date Sat Sep 12 2020
statusReport.totalCount : 99
calculateAvgWinePriceAndUpdate: Price Updated for Purchase Date Sat Sep 12 2020
statusReport.totalCount : 100
calculateAvgWinePriceAndUpdate: Price Updated for Purchase Date Sat Sep 12 2020