javascript - 如何在NodeJS中的MySQL查询中增加外部变量值

标签 javascript mysql node.js express

我正在使用NodeJS和MySQL开发API。

create API将一个Request作为一个对象,并在for语句中一个接一个地执行查询。

我在外部创建了一个名为createCnt的变量来计算查询的成功率,我想在发送响应时使用此值。

但是由于当前代码是回调,因此无法保证执行顺序。

因此,如果在查询之外打印createCnt,则始终显示-1。

如何在查询内部的查询外部增加变量?

创建API

exports.create = async (req, res, next) => {
  const { userId } = req.decoded;
  const { createList } = req.body;

  let createCnt = undefined;

  try {
    createCnt = -1;

    for (let i = 0; i < createList.length; i++) {
      const { content, color, date, colorLevel } = createList[i];

      let sql = `INSERT INTO post (content, color, date, colorLevel, userId) VALUES (?, ?, ?, ?, ?)`;

      Post.query(
        sql,
        [content, color, date, colorLevel, userId],
        async (err, result) => {
          if (err) {
            return next(err);
          }
          return await (createCnt += 1); // increase OK
        }
      );
    }
  } catch (error) {
    console.log(error);
  } finally {
    console.log(createCnt); // always "-1"
  }
};

最佳答案

问题是Post.query是异步的。您应该将其与await结合使用,以使其按预期工作。

关于javascript - 如何在NodeJS中的MySQL查询中增加外部变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57631581/

相关文章:

javascript - 从混合缓冲区获取原始二进制文件

javascript - 将文本转换为按钮的输入框

javascript - 仅仅为了测试而创建不同的商店是错误的吗?

javascript - 组件类型 Angular Directive(指令) ng-template

php - 如何使用 limit 子句对记录进行排序

mysql - mysql中三个表的内连接花费太长时间

mysql - 在 "include"模型字段中查询空数组

javascript - 如何使用缩小的javascript?

php - 如何使用从命令行执行的 PHP 连接 mysql

javascript - 如何在 Node JS 中正确使用 import