2013-09-16 2 views
0

나는 노드에서 mysql에 대한 연결을 실제로 초기화하는 데 가장 좋은 시간이 무엇인지 알아 내려고하고있다.노드에서 mysql 연결을 초기화 할 때

연결 풀을 만든 다음 모든 모델이 풀에 액세스 할 수 있도록 일부 글로벌로 설정해야합니까? 또는 쿼리를 수행 할 때마다 연결을 초기화해야합니까? (좋지 않습니다).

나는 "할 수있는"적절한 방법이있을 것이라고 확신하지만, 최선의 방법이 무엇인지는 확실치 않습니다.

답변

0

더 많은 연구가 끝나면 올바른 방법을 찾은 것 같아요.

2) 귀하의 모델에 해당 파일을 포함 시작

1) 응용 프로그램에 대한 연결 풀을 만듭니다.

3) 수영장에서 연결하십시오.

1

연결을 풀링하는 경우 필요할 때 바로 연결을 초기화하지 마십시오. 풀을 사용하지 않을 경우 응용 프로그램이 시작되었을 때, 당신은 단지 연결 정보를 저장할 수 있으며, 당신이 그것을 필요로 할 때 사용 :

다음
var mysql = require('mysql'); 
var connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'me', 
    password: 'secret' 
}); 

단일 사용 사례 :

connection.connect(); 
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) { 
    // we are done with the connection 
    connection.end(); 

    if (err) throw err; 
    console.log('The solution is: ', rows[0].solution); 
}); 

경우 '를 다시 풀링하면 응용 프로그램이 시작될 때 연결 풀을 만들어 필요한 때에 연결을 가져와야합니다. 둘 이상의 수영장을 만들면 안됩니다. 당신이 연결을 필요로 할 때

var mysql = require('mysql'); 
var pool = mysql.createPool({ 
    host: 'example.org', 
    user: 'bob', 
    password: 'secret' 
}); 

그런 다음,이 같은 것을 할 거라고 : 코드 청소기를 유지의 관심에서

pool.getConnection(function(err, connection) { 
    connection.query('SELECT something FROM sometable', function(err, rows) { 
    // we are done using the connection, return it to the pool 
    connection.release(); 

    // the connection is in the pool, don't use it here 
    }); 
}); 
0

을, 나는, 당신은 또한 단지 바로 풀 객체를 호출 할 수 있다고 생각 매뉴얼 https://github.com/felixge/node-mysql에 따라. 이는 풀에서 연결을 가져오고 풀어 놓는 로직을 추상화해야합니다.

EG :

var result = yield pool.query("SELECT * FROM users"); 

(I 공동 MySQL의 발전기에 대한 지원과 함께 사용하고 있지만, 구문이되어야합니다 같은 w/아웃 콜백)

관련 문제