0

我有以下代码:

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之前一样。任何帮助将不胜感激,因为我花了很长时间试图弄清楚这一点,因为我想将一个查询的结果用作下一个查询的输入,依此类推(包括具有多个结果的查询,所以只需在回调很快变得不合适)

4

0 回答 0