异步Nodejs数据库连接



我希望在命令行移到下一行执行之前完成数据库查询。

以下是我的代码摘录:

const express = require('express');
const bodyparser = require('body-parser');
const mysql = require('mysql');
const app = express();
app.use(bodyparser())
var pool = mysql.createPool(
{
connectionLimit:40,
host: <>
user:<>,
password: <>,
database:<>
}
)
console.log("First Print Command")
let sql = "select * FROM pinfo" 
pool.getConnection((err,conn1)=>
{
if(true)
{
conn1.query(sql,(err1,results)=>
{
conn1.release()
console.log("Second print command")
});
}
})
console.log("Third print command")
const port  = 3001;
app.listen(port, () => {
console.log('Server is running at port '+port);
});

这是我得到的输出

First Print Command
Third print command
Server is running at port 3001
Second print command

我希望print命令按顺序进行,我已经研究了async和promise,但由于它总是跳过命令,所以无法弄清楚语法,如果你能提供语法摘录,那将很有帮助

您可以等待查询完成并打印第三条语句,如

const express = require('express');
const bodyparser = require('body-parser');
const mysql = require('mysql');
const app = express();
app.use(bodyparser())
var pool = mysql.createPool(
{
connectionLimit: 40,
host,
user,
password,
database,
}
);
console.log("First Print Command");
async function queryDB() {
let sql = "select * FROM pinfo";
return new Promise(function (resolve, reject) {
pool.getConnection((err, conn1) => {
if (true) {
conn1.query(sql, (err1, results) => {
conn1.release()
console.log("Second print command")
resolve(results)
});
}
})
});
}
async function main() {
let results = await queryDB();
console.log("Third print command");
const port = 3001;
app.listen(port, () => {
console.log('Server is running at port ' + port);
});
}
main();

最新更新