MySQL2 库 NodeJS - 更新失败且没有错误 & RowsAffected 异步调用
MySQL2 Library NodeJS - Update Fails without error & RowsAffected on async call
非异步时获取AffectedRows的方式如下:https://github.com/mysqljs/mysql/issues/363
我下面的代码 - console.logs 的 none 更新后显示在控制台中,某些列未在数据库中更新,并且没有遇到错误或 try catch。如果有错误,为什么我看不到它,否则,为什么我看不到 AffectedRows?
这是从另一个异步函数调用的。
async function UpdatePassword(connection, rowID) {
... some code omitted here...
try
{
var [errQuery,results] = await
connection.query(sqlUpdate);
if (errQuery) throw errQuery;
console.log("Back from update");
console.log("AffectedRows=" + results.affectedRows);
} catch (err)
{
console.log("*** Catch Error:")
console.log(err.stack);
}
}
我想我已经改进了代码,但还是有同样的问题。没有错误,在 connection.query 之后没有 console.log 语句出现。
console.log("SQL Update=" + sqlUpdate);
try
{
var [rows, fields, errQuery] = await connection.query(sqlUpdate);
if (errQuery) throw errQuery;
console.log("Back from update");
console.log("AffectedRows=" + rows.affectedRows);
} catch (err2)
{
console.log("*** Catch Error:")
console.log(err2.stack);
}
console.log ("end function");
在这里得到答案:https://github.com/sidorares/node-mysql2/issues/999。
从第一个异步例程到第二个异步例程的调用需要等待。
for (let r=0; r < rows.length; ++r) {
await UpdatePassword(connection, rows[r].ID);
}
他推荐了一个 for 循环,而不是我之前得到的答案 。如果使用 .each 或 .map,您将创建另一个 "inner" 函数,该函数不是异步的,并且您不能在那种逻辑中调用使用 "await" 关键字。
非异步时获取AffectedRows的方式如下:https://github.com/mysqljs/mysql/issues/363
我下面的代码 - console.logs 的 none 更新后显示在控制台中,某些列未在数据库中更新,并且没有遇到错误或 try catch。如果有错误,为什么我看不到它,否则,为什么我看不到 AffectedRows?
这是从另一个异步函数调用的。
async function UpdatePassword(connection, rowID) {
... some code omitted here...
try
{
var [errQuery,results] = await
connection.query(sqlUpdate);
if (errQuery) throw errQuery;
console.log("Back from update");
console.log("AffectedRows=" + results.affectedRows);
} catch (err)
{
console.log("*** Catch Error:")
console.log(err.stack);
}
}
我想我已经改进了代码,但还是有同样的问题。没有错误,在 connection.query 之后没有 console.log 语句出现。
console.log("SQL Update=" + sqlUpdate);
try
{
var [rows, fields, errQuery] = await connection.query(sqlUpdate);
if (errQuery) throw errQuery;
console.log("Back from update");
console.log("AffectedRows=" + rows.affectedRows);
} catch (err2)
{
console.log("*** Catch Error:")
console.log(err2.stack);
}
console.log ("end function");
在这里得到答案:https://github.com/sidorares/node-mysql2/issues/999。
从第一个异步例程到第二个异步例程的调用需要等待。
for (let r=0; r < rows.length; ++r) {
await UpdatePassword(connection, rows[r].ID);
}
他推荐了一个 for 循环,而不是我之前得到的答案