Express.JS + Node-Mysql 和每个 http 请求 1 个连接
Express.JS + Node-Mysql and 1 connection per http request
我是Express的新手,我试图围绕Express + Node-Mysql进行思考。
我想为每个http请求使用一个新的mysql连接。
这是我的应用程序.js文件:
var express = require( "express" ),
mysql = require( "mysql" ),
routes = require( "./routes" );
var app = module.exports = express(),
db = mysql.createConnection( require( "./config/db" ) );
app.configure(function(){
app.set( "views", __dirname + "/views" );
app.set( "view engine", "jade" );
app.set( "db", db );
app.use( express.logger( "dev" ));
app.use( express.bodyParser() );
app.use( app.router );
app.use( express.static( "front" ));
});
app.configure( "development", function(){
app.use( express.errorHandler() );
});
routes( app );
app.listen(80);
然后,在我的路由文件中,我执行以下操作:
module.exports = function( app ){
var db = app.get( "db" );
app.get( "/stuff", function( req, res ){
db.connect( function(err){
var sql = "SELECT * FROM stuff";
db.query( sql, function( err, result ){
res.send( result );
db.end(function( err ){ });
});
});
});
};
这有效,但我不确定它是否"正确"。 有没有更清洁的方式来完成我所追求的?
感谢(提前)您的帮助。
如果要
为每个请求执行一个数据库连接,请放置以下行:
db = mysql.createConnection(require( "./config/db" ));
在您的请求处理程序中(例如在路由.js内),就在您执行db.connect()
.从查询中获得所有结果后,致电db.end()
。
由于连接到数据库是一项相对昂贵的操作,因此您可能需要考虑使用连接池。保持几个连接处于打开状态并在需要时从池中提取空闲连接比为每个请求打开和关闭新连接更有效。泛型池 npm 模块是一个很好的模块。
相关文章:
- Meteor如何接收HTTP请求
- 在我的情况下,如何进行http请求
- 使用插件收听Firefox标签的http请求
- http请求使用html而不是json进行响应
- 在node-js路由中发出http请求
- 是否可以在没有HTTP请求或<输入>
- Acync JS HTTP请求通知请求
- PhantomJs在控制台中发出http请求时不会返回任何状态
- PHP处理来自一个页面的http请求,并将其显示在另一个页面上
- Firefox插件-如何发出http请求
- 验收测试主要针对传出的http请求
- 验证HTTP请求来自NFC标签上的点击
- 如何制作'http请求'在Node js中同步
- 为什么我在Cloud9中的http请求总是返回错误
- AngularJS Typeahead和$http请求限制
- HTTP请求使用cURL,但在浏览器中使用javascript时会得到CORS响应
- 如何使用Chrome扩展API获取网页的所有HTTP请求
- 将http请求中的数据传递给C#控制器
- 在初始化路由之前发送$http请求
- 从客户端捕获 HTTP 请求(包括 ajax)