我正在使用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/