继上篇文章之后MySQL管理与node连接之后,进行密码登陆验证时,发现连接sql进行查询时可以查询的到,但是与业务进行整合时由于异步的原因,总是稍慢一步。
调试了一天之后终于使用Promise解决了此问题。
- 首先在项目导入mysql模块:
npm install mysql
- 接下来就是代码了:
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;