【问题标题】:Using for loop with async in nodejs在nodejs中使用带有异步的for循环
【发布时间】:2018-07-12 17:48:48
【问题描述】:

我已经连接了 mongodb 和 nodejs。

我对要列出的 sav 查询结果有疑问。

results = [];

for(i = 0; i<query.length; i++){
    db.collection(collectionName).find(query[i]).toArray(function(err, result){
        results[i] = result;
    });
}

我用过 async.waterfall 但效果不是很好... 如果你像我一样解决了这个问题,请问如何解决这个问题?

这样查询:

{
location:{
  $geoWithin : {
    $center: [[lng, lat], radian]}}, 
time : "time value" 
}

lng, lat, time is list..

【问题讨论】:

  • 为什么不使用 async-await?
  • “效果不佳”是什么意思?您不清楚哪些需要澄清?
  • 我还不懂“异步”。我会研究一下 asyn-await ..
  • 等我给你写一个答案。
  • 作为侧节点:在大多数情况下,循环查询数据库并不是一个好主意。

标签: node.js mongodb for-loop asynchronous waterfall


【解决方案1】:

根据查询数组的内容,您最好运行一个使用 $or 运算符的查询,而不是遍历查询数组并为每个查询触发服务器请求: p>

db.collection(collectionName).find({ '$or': query }).toArray((err, results) => {
    console.log(results);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多