我有以下代码:
app.get('/', async function (req, res) {
const mysql = require("mysql");
// Connection to db
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'PASSWORD',
database: 'test_database'
});
await connection.connect(function(err){
if (err){
return console.error("error: " + err.message);
}
console.log("Connected to test_database");
});
// DO FIRST QUERY
console.log("About to do first query")
let search_term = "1";
let query = "SELECT * FROM main WHERE id = \'" + search_term + "\'";
let firstResult;
firstResult = await connection.query(query, (err, results) => {
if (err) return console.error(err);
console.log(JSON.stringify(results));
console.log(JSON.stringify(results[0]));
console.log(JSON.stringify(results[0]["MiddleName"]));
closeConnection(connection);
return JSON.stringify(results[0]["MiddleName"]);
});
console.log("First result: " + firstResult);
});
const server = app.listen(5000, function () {
console.log('Server is running on port 5000');
});
let closeConnection = async function(connection){
await connection.end(function (err){
if (err){
return console.log("Error: " + err.message);
}
return console.log("Database connection closed");
})
}
当我使用它运行它时,node hometest
我得到这个作为输出:
Server is running on port 5000
About to do first query
First result: [object Object]
Connected to test_database
[{"id":1,"FirstName":"firstName","MiddleName":"middleName","LastName":"lastName"}]
{"id":1,"FirstName":"firstName","MiddleName":"middleName","LastName":"lastName"}
"middleName"
Database connection closed
所以我认为我有一个比赛条件问题。console.log("First result: " + firstResult);
在定义之前运行firstResult
(它肯定没有定义为当我尝试打印JSON.stringified()
我得到的版本时UnhandledPromiseRejectionWarning
)。我不知道为什么connection.query()
和await
之前一样。任何帮助将不胜感激,因为我花了很长时间试图弄清楚这一点,因为我想将一个查询的结果用作下一个查询的输入,依此类推(包括具有多个结果的查询,所以只需在回调很快变得不合适)