2013-01-31 2 views
3

Express에 익숙하지 않으며 Express + Node-Mysql을 둘러보기 위해 노력하고 있습니다.Express.JS + 노드 -Mysql 및 http 요청 당 1 개의 연결

각 HTTP 요청마다 새로운 mysql 연결을 사용하고 싶습니다. 나는 다음과 같은 것을 할, 내 경로 파일에, 그리고

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); 

: 여기

내 app.js 파일이 작동

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){ }); 

      }); 

     }); 

    }); 

}; 

을,하지만 난 그게 확실하지 않다 "적절하다". 내가 한 일을 성취하기위한 더 깨끗한 방법이 있습니까?

귀하의 도움에 미리 감사드립니다.

답변

3

당신이 요청 당 하나의 DB 연결을 수행하려는 경우,이 라인 넣어 : 바로 당신이 db.connect()을 할 경우 전에 (예를 들어, routes.js 내부) 귀하의 요청 핸들러 내부

db = mysql.createConnection(require("./config/db")); 

합니다. 검색어의 모든 결과를 얻은 후에 db.end()으로 전화하십시오.

데이터베이스에 연결하는 것이 상대적으로 비용이 많이 들기 때문에 연결 풀 사용을 고려할 수 있습니다. 몇 개의 연결을 열어 놓고 필요시 풀에서 자유로운 연결을 풀면 각 요청에 대해 새 연결을 열고 닫는 것보다 더 효율적입니다. generic-poolnpm module은 좋은 것입니다.

관련 문제