nodejs连接不上mysql数据库_使用nodejs连接mysql数据库

本文介绍了如何使用Node.js连接MySQL数据库,包括配置数据库连接、创建数据库操作工具类以及执行SQL语句的方法,同时提到了Promise的使用和数据库操作实例。

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

使用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数据库的过程.. 目前在各种自学中.. 期待共同提高~大神请轻拍..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值