Promise解决node与mysql的异步问题

在尝试将MySQL数据库连接与Node.js业务整合时,遇到由于异步操作导致的延迟问题。经过一天的调试,通过引入Promise成功解决了这个问题。文章介绍了如何使用Promise来管理MySQL查询与Node.js应用的同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继上篇文章之后MySQL管理与node连接之后,进行密码登陆验证时,发现连接sql进行查询时可以查询的到,但是与业务进行整合时由于异步的原因,总是稍慢一步。
调试了一天之后终于使用Promise解决了此问题。

  1. 首先在项目导入mysql模块:npm install mysql
  2. 接下来就是代码了:
var mysql = require('mysql');
let databaseConfig = {
    host : 'localhost',
    user : 'nodejs', 
    password : 'password12345',
    database : 'product',
};
var sql = {};
sql.query = function(sql,params){
return new Promise(function(resolve,reject){
    //每次使用的时候需要创建链接,数据操作完成之后要关闭连接
    var connection = mysql.createConnection(databaseConfig);        
    connection.connect(function(err){
        if(err){
            console.log('数据库链接失败');
            throw err;
        }
     //开始数据操作
     //传入三个参数,第一个参数sql语句,第二个参数sql语句中需要的数据,第三个参数回调函数
    connection.query( sql, params, function(err,results,fields ){
       if(err){
            console.log('数据操作失败');
            throw err;
        }
        //将查询出来的数据返回给回调函数
        resolve(results);
        //results作为数据操作后的结果,fields作为数据库连接的一些字段
        //停止链接数据库,必须再查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
         connection.end(function(err){
              if(err){
                  console.log('关闭数据库连接失败!');
                  throw err;
              }
          });
       });
   });
});
}

module.exports = sql;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值