【问题标题】:node mysql checking and updating foreach loop节点mysql检查和更新foreach循环
【发布时间】:2015-03-10 15:44:13
【问题描述】:

我有一个 foreach 循环,在其中我连接到 mysql 数据库从表“A”中选择一个唯一值返回该值,然后根据该值是否存在插入并更新表“A”中的行。我遇到的问题是,节点 JS / javascript 的异步特性似乎意味着当我循环返回并再次在表“A”中查找该值时,它有时不存在,因为前一个循环没有及时执行插入.将不胜感激。

【问题讨论】:

  • 简单,不要使用 forEach 循环。使用一个函数来调用自己并使用下一条记录进行循环。
  • 您介意详细解释一下吗
  • 换句话说,在前一个数据库请求完成之前不要继续循环,因为每个后续迭代都需要前一个完成。
  • 谢谢,如果您将此作为答案,请将其标记为正确答案。

标签: mysql node.js


【解决方案1】:

由于在您的情况下,您需要在下一个数据库查询之前完成前一个数据库查询,因此您必须停止使用您的 forEach 循环,而是使用递归函数。

var testArr = ['a', 'b', 'c'];

function doWork (i) {
    if (i === testArr.length) return;
    db.doQuery('foobar with ' + testArr[i] + '...', function () {
        doWork(i++);
    });
}
doWork(0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2016-05-18
    • 1970-01-01
    • 2018-08-02
    • 2017-10-27
    相关资源
    最近更新 更多