【发布时间】:2020-07-26 16:34:24
【问题描述】:
我创建了一个循环来执行多个查询,如下代码所示:
router.get('/getAverageClicks', async (req, res) => {
if(req.headers.token == process.env.API_TOKEN){
let clicks = [];
database.collection('locations').countDocuments().then(loccount => {
for (var i = 0; i <= 10; i++) {
var past = new Date();
past.setDate(past.getDate() - i);
var tpast = new Date();
tpast.setDate(tpast.getDate() -1 -i)
console.log(tpast);
var query = { $and : [ {date: {$lte: past}},{date: {$gte: tpast}}]};
collection.countDocuments(query).then(count => {
console.log(count)
clicks.push(count/loccount);
if (clicks.length == 10){
res.end(JSON.stringify(clicks.reverse()));
res.status(200);
}
});
}
})
}else{
res.end("Unauthorized")
res.status(401)
}
});
现在的问题是 mongodb 异步返回数据,这意味着我有时会在不同的行中获取数据。我的问题是如何在同一行中执行 10 个不同日期的查询,以便每次都获得相同的数组。或者我如何改进我的循环以等待每个操作完成
【问题讨论】: