【问题标题】:How to increment external variable value within MySQL Query in NodeJS如何在 NodeJS 中的 MySQL Query 中增加外部变量值
【发布时间】:2019-08-23 18:49:11
【问题描述】:

我正在使用 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"
  }
};

【问题讨论】:

    标签: javascript mysql node.js express


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 2013-10-23
      相关资源
      最近更新 更多