gpt4 book ai didi

mysql - Node js for循环中调用mysql存储过程

转载 作者:行者123 更新时间:2023-11-29 18:02:36 24 4
gpt4 key购买 nike

所以,我目前正在使用 mysql npm 包 https://www.npmjs.com/package/mysql 。我有一个要求,我必须多次调用存储过程,并注意后续存储过程调用取决于前一个调用。伪代码如下:

let mysql = require("mysql");

let mysqlPoolConnection = mysql.createPool({
connectionLimit: 20,
host: '0.0.0.0',
port: '3306',
user: 'user1',
password: 'pwd',
database: 'mysql_db'
});


for (let index = 0; index < params.length; index++) {
let sp_ProcedureCall = "CALL sp_StoredProcedure(?, ?, ?, ?)";
let sp_ProcedureParams = [params[index].firstParam, params[index].secondParam, params[index].thirdParam, params[index].fourthParam];
// This is where the issue is. I'd like to call the stored procedure once and then once I get a response from it then make subsequent calls. Basically, depending on the previous stored procedure result, I decide whether I continue with subsequent calls or not.
mysqlPoolConnection.query(sp_ProcedureCall, sp_ProcedureParams, (errorObj, responseObj, fieldsObj) => {

}
}

最佳答案

NodeJS 是异步的,这意味着您的 for 循环无需等待调用结果即可迭代。如果您想“等待”以前的结果,则需要控制程序的流程。

查看类似 async 的库启用该类型的控制流。根据您的描述,eachSeries()可能是一个不错的选择 - 为数组中的每个值运行一个函数,并且一次只运行一个。 (或减少,取决于您的需要 - 还有其他选项)

关于mysql - Node js for循环中调用mysql存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48209432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com