gpt4 book ai didi

javascript - 使用nodejs处理mysql连接

转载 作者:行者123 更新时间:2023-11-29 06:40:40 25 4
gpt4 key购买 nike

我正在尝试设置一个连接到 MySQL 的函数,以便其他函数可以调用它并获得连接作为返回。这是我基于文档的代码:

function connect_to_mysql(){
var con = mysql.createConnection({
host: "localhost",
user: "roots",
password: "",
database: "mydb"
});



con.connect(function(err) {
if (err)
{
throw err;
}

});

return con ;

}

function do_stuff () {
connection = connect_to_mysql();
console.log('--------------------------------------------------');
console.log('ALL OK ## ');
return ;
}

问题是这样的:假设连接出现错误。我在终端中得到以下输出:

--------------------------------------------------
ALL OK ##
D:\wamp\www\pop\node_modules\mysql\lib\protocol\Parser.js:80
throw err; // Rethrow non-MySQL errors
^

基本上,代码继续运行,在抛出错误之前我得到ALL OK ##

如果连接失败,我想中止代码....简单地说,如果连接失败,我希望connect_to_mysql返回false,这样我就可以中止该过程.

最佳答案

这里的问题是连接函数是异步的,这就是它收到回调的原因:

con.connect(function(err) {
if (err)
{
throw err;
}
});

当你运行 do_stuff 时,console.log('------------------------------------ ----------------'); console.log('ALL OK ## ');function(err) { if (err) { throw err; } } 同时运行。

我建议更改 connect_to_mysql 函数以接收建立连接后调用的回调:

function connect_to_mysql( callback ){
var con = mysql.createConnection({
host: "localhost",
user: "roots",
password: "",
database: "mydb"
});

con.connect(function(err) {
if (err){
throw err;
} else {
callback(con);
}

});
}

然后你可以这样做:

connect_to_mysql( conn => {
console.log("all ok");
// run queries ...
});

您的回调函数还可以在连接失败时处理错误:

function connect_to_mysql( callback ){
var con = mysql.createConnection({
host: "localhost",
user: "roots",
password: "",
database: "mydb"
});

con.connect(callback);
}


connect_to_mysql( function(err,conn) {
if(err) { //abort };

console.log("all ok");
// run queries ...
});

希望对你有帮助

关于javascript - 使用nodejs处理mysql连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753133/

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