gpt4 book ai didi

node.js - MySQL 函数返回未定义,但确实连接

转载 作者:太空宇宙 更新时间:2023-11-03 23:16:11 24 4
gpt4 key购买 nike

我有一个奇怪的问题,我有一个名为 MySQL.Connect() 的函数,如果连接成功,它会返回 true ,而 false 如果没有连接。问题是,它确实连接了,因为 SELECT 查询返回了数据库的结果,但该函数返回 undefined (因此 truefalse.该函数所在的类如下:

RP_MySQL.js:

module.exports = class RP_MySQL {
constructor(host, user, password, database) {
this.host = host;
this.user = user;
this.password = password;
this.database = database;
this.mysql = require('mysql');
this.connection = null;
this.connected = false;
}

Connect() {
this.connection = this.mysql.createConnection({
host: this.host,
user: this.user,
password: this.password,
database: this.database
});

this.connection.connect(function(thrownError) {
console.log(thrownError);
if(thrownError) {
return false;
} else {
return true;
}
});
}
}

下面是我调用该函数的地方:

执行.js:

var RP_MySQL = require('./Classes/RP_MySQL');
var RP_Log = require('./Classes/RP_Log');

var MySQL = new RP_MySQL("localhost", "root", "", "somedatabase");
var Log = new RP_Log();

if(MySQL.Connect()) {
Log.Info("Successfully connected to database");
} else {
Log.Critical("Error connecting to database");
}

MySQL.connection.query("SELECT * FROM vehicles", function(err, results, fields){
console.log(results);
});

最佳答案

问题是您在 .connect 的回调中返回 true/false

您可以向您的 Connect 方法提供回调,该方法将为您提供连接状态。

Connect(callback) {
// <Snip>
this.connection.connect(function(thrownError) {
console.log(thrownError);
if(thrownError == null) {
return callback(true);
} else {
return callback(false);
}
});
}

// Elsewhere
MYSQL.Connect(status => {
if (status) {
Log.Info("Successfully connected to database");
} else {
Log.Critical("Error connecting to database");
}
}

在 Node 世界中,一般模式是回调采用 function(error, result) 形式,并且在继续之前检查 error 是否有值。

Here是一篇关于回调的文章。

关于node.js - MySQL 函数返回未定义,但确实连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55226279/

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