使用nodejs 连接mysql数据库还是很简单的,有现成的模块可以直接调用。下面介绍下 mysql 的调用。
mysql 模块
使用模块mysql
异步处理async
定义mysql 配置
var config = {
mysql : {
host : '127.0.0.1',
port : '3306',
user : 'root',
password : 'root',
database : 'picconvert'
}
};
module.exports = config;
定义一个常用的mysql调用的工具类
var mysql = require('mysql');
var config = require('../config/config');
var async = require('async');
// 使用连接池,提升性能
// var pool = mysql.createPool($util.extend({}, $conf.mysql));
var pool = mysql.createPool(config.mysql);
//1. 执行语句返回结果
var onebyone = function(list,callback){
if(!list.length){
list = [list];
}
return new Promise(function(resolve,reject){
pool.getConnection(function (err, connection) {
if (err) {
reject(err);
}
connection.beginTransaction(function (err) {
if (err) {
reject(err);
}
var funcAry = [];
list.forEach(function (sql_param) {
var temp = function (cb) {
var sql = sql_param.sql;
var param = sql_param.params;
connection.query(sql, param||[], function (tErr, rows, fields) {
if (tErr) {
connection.rollback(function () {
throw tErr;
});
} else {
cb(null,rows);
}
})
};
funcAry.push(temp);
});
async.parallel(funcAry, function (err, result) {
if (err) {
connection.rollback(function (err2) {
connection.release();
// connection.destroy();\
reject(err2);
});
} else {
connection.commit(function (err2, info) {
if (err2) {
console.log("执行事务失败," + err2);
connection.rollback(function (err3) {
connection.release();
// connection.destroy();
reject(err3);
});
} else {
connection.release();
// connection.destroy();
resolve(result);
}
})
}
});
});
});
});
};
module.exports = onebyone;
上面可以执行多条sql 同步执行,然后获得返回结果进行处理。
如何调用
/**
操作attach表,修改数据
**/
var query = require('../lib/sql');
var sqls = {
uploadOne : 'insert into attach (filePath,ip,browser,createTime,filedel,type) values (?,?,?,?,?,?) ',
successOne : 'update attach set filedel=?,type=? where id=? ',
failOne : 'update attach set filedel=1,type=0 where id=? ',
getById : 'select * from attach where id=? ',
getLastData : 'select * from attach where createTime <= date_sub(now(),interval 5 minute) and filedel=0',
updateNewPath : 'update attach set targetPath=? where id=? '
};
module.exports = {
/**
* 上传一个新的图片文件,插入数据库
**/
uploadOne : function( data ){
var list = {
sql : sqls.uploadOne,
params : [data.filePath,data.ip,data.browser,new Date(),0,0]
};
return query(list);
},
/***
* 将文件处理完毕并成功下载,
* 1.更新删除状态
* 2.更新处理状态
**/
successOne : function( id ){
var list = {
sql : sqls.successOne,
params : [1,1,id]
};
return query(list);
},
/***
* 删除或替换
*
***/
failOne : function( id ,cb ){
var list = {
sql : sqls.failOne,
params : [id]
};
return query(list);
},
/***
* 根据ID获得信息
*
***/
getById : function( id ){
var list = {sql : sqls.getById,params : [id]};
return query(list);
},
/***
* 获得距离当前5分钟之前的未处理的数据,并将对应的数据清空
**/
getLastData : function(){
var list = {
sql : sqls.getLastData,
params : []
};
return query(list);
},
/**
* 更新新的文件路径
***/
updateNewPath : function(id,newPath){
var list = {
sql : sqls.updateNewPath,
params : [newPath,id]
};
return query(list);
}
};
直接定义sql语句,然后通过工具类调用查询数据并返回。
工具类中还用了promise
,对promise
还不熟悉,正在学习实践中...
以上就是通过nodejs
连接 mysql
数据库的过程.. 目前在各种自学中.. 期待共同提高~大神请轻拍..