2013-09-16 83 views
0

我想知道什麼是實際初始化連接mysql中節點的最佳時間。什麼時候初始化節點的mysql連接

我應該創建一個連接池,然後將它們設置爲全局的,以便我的所有模型都可以訪問池?或者我應該在每次查詢時初始化連接?(看起來很糟糕)。

我確定有一些「正確」的方式來做到這一點,但我並不確定最好的方法是什麼。

回答

0

經過更多的研究,我想我已經找到了正確的方法。

1)創建應用上的一個連接池啓動

2)包括在你的模型文件。

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

(我使用的是共同的MySQL與發電機的支持,但語法它應該是相同的瓦特/出回調)

相關問題