【发布时间】: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