Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在express.js中解析承诺的mysql查询?_Mysql_Node.js_Express - Fatal编程技术网

如何在express.js中解析承诺的mysql查询?

如何在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

我试图使用npm包promise mysql并返回json数据(或字符串不重要),但我在使用await/async的promise链之后遇到了问题

使用当前代码,我在console.log中收到承诺{undefined},在响应用户之前我就有了承诺。响应只是不向用户发送任何内容并将其关闭。任何人都能指出如何调试这个程序的正确方向吗

index.js
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");
}