2013-04-13 1 views
4

신청서에 node-postgres을 사용하고 있습니다. 안정적인 연결을 위해 최선의 방법을 알고 싶습니다. 당신은 내가 모든 요청에 ​​대한 DB를 연결하고 쿼리가 실행되면 분리하고있어 코드에서 볼 수 있듯이 postgres connection from node.js

다음

exports.getAll = function (args, callback) { 
helper.client = new pg.Client('tcp://postgres:system6:[email protected]/abc_dev'); 
helper.client.connect(); 
helper.client.query('select count(1) as total_records from facilities', function(err,response){ 
    helper.client.query('select * ,'+response.rows[0].total_records+' as total_records from facilities', 
     function(err,response){ 
      callback(response); 
      helper.client.end.bind(helper.client); 
     }); 
    }); 
}; 

, 내가 지금 사용하고 코드입니다. 나는 한 번만 DB에 전역으로 연결할 수 있고 열린 연결을 사용하여 쿼리를 실행할 수있는 또 하나의 아이디어가 있습니다. 코드 모양은 다음과 같습니다.

helper.client = new pg.Client('tcp://postgres:system6:[email protected]/abc_dev'); 
helper.client.connect(); 

exports.getAll = function (args, callback) { 
helper.client.query('select count(1) as total_records from facilities', function(err,response){ 
    helper.client.query('select * ,'+response.rows[0].total_records+' as total_records from facilities', 
     function(err,response){ 
      callback(response); 
     }); 
    }); 
}; 

여기서 연결은 끝나지 않습니다. 내가 아는 한 나는 어느 것이 최선인지 결정할 수 없다. 제안 해주세요.

감사 있습니다 .. node-postgres wiki의 예입니다

+0

매우 흥미로운 질문입니다. 내가 아는 한 요청 범위에 대한 연결은 대부분의 언어에서 널리 사용됩니다. 그러나 Node와 같은지 확실하지 않습니다. –

답변

2

. 요청이 처리 될 때마다 연결됩니다.

var server = http.createServer(function(req, res, next) { 
    pg.connect(function(err, client, done) { 

이것은 내가 옳다고 생각하는 것입니다. 연결은 요청 범위에 있어야합니다.

+2

'node-postgres'는 연결 풀링을 사용하기 때문에 (기본 풀 크기는 10 개의 연결입니다), 이것은 좋은 해결책입니다. 풀링 기능을 제공하지 않고 매번 데이터베이스 서버에 실제로 다시 연결해야하는 모듈의 경우 자원 낭비로 보이고 글로벌 연결이 제대로 작동 할 수 있습니다. – robertklep