如何在express.js中解析承诺的mysql查询?
我试图使用npm包promise mysql并返回json数据(或字符串不重要),但我在使用await/async的promise链之后遇到了问题 使用当前代码,我在console.log中收到承诺{undefined},在响应用户之前我就有了承诺。响应只是不向用户发送任何内容并将其关闭。任何人都能指出如何调试这个程序的正确方向吗 index.js如何在express.js中解析承诺的mysql查询?,mysql,node.js,express,Mysql,Node.js,Express,我试图使用npm包promise mysql并返回json数据(或字符串不重要),但我在使用await/async的promise链之后遇到了问题 使用当前代码,我在console.log中收到承诺{undefined},在响应用户之前我就有了承诺。响应只是不向用户发送任何内容并将其关闭。任何人都能指出如何调试这个程序的正确方向吗 index.js app.get(“/”,异步(req,res)=>{ console.log(Promise.resolve(wait getLogs())) re
app.get(“/”,异步(req,res)=>{
console.log(Promise.resolve(wait getLogs()))
res.send(等待getLogs());
});
mysql.js
constmysql=require(“承诺mysql”);
让池;
异步函数startDatabasePool(){
pool=wait mysql.createPool({
连接限制:10,
主持人:“xxx”,
用户:“xxx”,
密码:“xxx”,
数据库:“xxx”
});
}
异步函数getDatabasePool(){
如果(!pool)等待startDatabasePool();
回流池;
}
module.exports={
getDatabasePool,
startDatabasePool
};
users.js
const{getDatabasePool}=require(“./mysql”);
异步函数getLogs(){
让pool=等待getDatabasePool();
查询(“按logdate desc从日志顺序选择*”,函数(
错误,
结果,
领域
) {
如果(错误)抛出错误;
返回JSON.stringify(结果);
});
}
module.exports={
获取日志
};
首先,我想尝试一下:
app.get("/", async (req, res) => {
let logs = await getLogs()
console.log(logs)
res.send(logs);
});
我希望有帮助 index.js
mysql.js
users.js
当我这样做的时候,我感觉users.js文件是不正确的。我不完全确定如何归还游泳池。我保证。我是否也使回调异步?或者只返回整个pool.query,返回链上的所有内容?请解释一下虽然不是我最后使用的解决方案,但如果您不使用modern便利变量,这是一个解决方法。
app.get("/", async (req, res) => {
const result = await getLogs();
res.send(result);
});
const mysql = require("promise-mysql");
let pool;
module.exports.startDatabasePool = async () => {
pool = await mysql.createPool({
connectionLimit: 10,
host: "xxx",
user: "xxx",
password: "xxx",
database: "xxx"
});
}
module.exports.getDatabasePool = async () => {
if (!pool) await startDatabasePool();
return pool;
}
// convert function as promise
module.exports.executeQuery = async(params) => {
return new Promise((resolve, reject) => {
pool.query(params, function (error, result, fields) {
if (error) {
reject(error);
} else {
resolve(result);
}
});
});
};
const { executeQuery } = require("./mysql");
module.exports.getLogs = async () => {
return await executeQuery("SELECT * from logs order by logdate desc");
}