在node.js连接mysql的过程,我们通常有两种连接方法,普通连接和连接池。 这两种方法较为常见,当我们使用express框架时还会选择使用中间express-myconnection,可以单独对mysql配置,也可以把connection集成到express中间件中。 最后送上一个node.js 连接各种主流数据库示例代码。 前提条件1、安装mysql对应的驱动,npm install mysql 2、安装第三方插件express-connection, npm install express-connection 普通连接
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'secret',
database : 'my_db'
});
connection.connect();
connection.query('select * from solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows);
});
connection.end();
连接池引入连接池后,最省事之处就是你不用每次用完以后去手动关闭connection。连接池的option还有很多选项,可以根据自己的需要来配置。
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host : 'example.org',
user : 'bob',
password : 'secret'
});
pool.query('select * from solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows);
});
当然如果你的应用没有那么多,而你对连接池回收机制又不放心,也可以手动关闭连接实现把连接放回到资源池里,调用 connection.release()
pool.getConnection(function(err, connection) {
// Use the connection
connection.query( 'SELECT something FROM sometable', function(err, rows) {
// And done with the connection.
connection.release();
// Don't use the connection here, it has been returned to the pool.
});
});
关闭整个连接池的连接
pool.end(function (err) {
// all connections in the pool have ended
});
express-myconnectionexpress-myconnection是一个Connect/Express自动提供mysql 连接的中间件。 共提供三中策略管理db连接。
这也是我在项目里所使用的方法,因为业务逻辑不复杂,没有封装db层,直接在app.js里配置,然后在路由层里直接调用。 app.js
var mysql = require('mysql'),
myConnection = require('express-myconnection'),
dbOptions = {
host: 'localhost',
user: 'dbuser',
password: 'password',
port: 3306,
database: 'mydb'
};
app.use(myConnection(mysql, dbOptions, 'single'); //作为中间件来使用
/router/order.js 在路由文件里应用 在这里也可以调用存储过程:conn.query('call usp_test',[传参数],function(err,result))
router.get('/cost', function(req, res, next) {
req.getConnection(function(err, conn) {
if (err) {
return next(err);
} else {
conn.query('select * from test', [], function(err,result) {
if (err) {
return next(err);
} else {
res.Json(result); //可以直接把结果集转化Json返回给客户端
}
});
}
});
});
(责任编辑:最模板) |

织梦dede机械设备公司企业
人气:3257
大气经典红色全静态企业
人气:455
Puro英文综合商城网站mag
人气:169
Prestashop英文医疗护理网站
人气:209
仿新版美乐乐2012ecshop模板
人气:764
ecshop内衣模板
人气:667