节点 MySQL 嵌套异步循环中的两个查询

Node MySQL two queries in nested async loop

我需要在异步循环中进行两个数据库查询。我使用 node-mysqlasync.js.

这是我的代码示例:

async.every(firstArray, (first, firstCB) => {
  async.every(secondArray, (second, secondCB) => {
    async.every(thirdArray, (third, thirdCB) => {
      model.getUsers(third, (res) => {
         model.insert(res.stuff, () => {
           thirdCB()
         })
       })
     }, (err) => {
       secondCB()
     });
    }, (err) => {
     thirdCB()
    })
  }, () => {
  firstCB()
}, () => {
  // done 
})

迭代效果很好。我的问题是在我做两个查询的最后一个循环中:console.log .. considering thirdArray.length === 3

..getting users
..getting users
..getting users
..inserting stuff
..inserting stuff
..inserting stuff

为什么会这样?我最近在第二次查询后调用了第三个CB。

我什至尝试过 async.waterfall([getUser, insert], thirdCB) 但结果相同。

感谢您的帮助!

经过长时间的研究,我发现 !

此问题的解决方案是使用 eachLimit,将限制设置为 1,而不是 every。这将限制每个项目的异步操作量。