【发布时间】:2020-11-13 23:12:27
【问题描述】:
我正在寻求有关我正在为更大的应用程序构建的数据库包的一些帮助。该应用程序本质上将通过使用 npm 中的 mysql 包将某些信息保存在数据库中。我面临的问题是,当我尝试将结果变量传递给我创建的变量时,我总是不确定。尽管如果我在显示结果变量的变量传输语句下方放置一个日志语句,它将被正确填充。我已经进行了大量研究,并认为这与作为查询一部分的承诺和/或回调函数有关。我想知道是否可以让某人检查我的代码并让我知道最佳行动方案。我花了几个小时在线研究并尝试各种解决方案,但没有任何效果。
const mysql = require("mysql");
var sqlResults;
var pool = mysql.createPool({
host: "example.com",
user: "exampleUser",
password: "123456Password",
database: "TestDB"
});
module.exports = {
...
databaseSelect: function(table, fields, conditionalStmt) {
pool.getConnection(function(err, connection) {
if (err)
throw err;
console.log("Connected to the example DB!");
var sql = "SELECT " + fields + " FROM " + table + " " + conditionalStmt;
connection.query(sql, function(error, results, fields) {
console.log("Successfully retrieved records from " + table + "\n\t" + sql);
sqlResults = results;
connection.release();
sqlResults = results;
console.log(results);
if (error)
throw error;
});
});
console.log(sqlResults);
return sqlResults;
}
}
这是我收到的输出示例:
I am ready!
undefined
undefined
Connected to the example DB!
Successfully retrieved records from User_Level_Info
SELECT HashID, Level, Experience FROM User_Level_Info WHERE HashID = 'e578059cabc6f937f0219127384126143e272acbac52c331345d573e0f085d21'
[ RowDataPacket {
HashID: 'e578059cabc6f937f0219127384126143e272acbac52c331345d573e0f085d21',
Level: 1,
Experience: 0 } ]
【问题讨论】:
-
你必须等到你得到结果。请改用 Promise。
-
您愿意详细说明吗?在这种情况下不能使用 async/await 是否有原因
-
我已将其转换为承诺。更新了我的答案。