Привет, я только что прочитал документы пакета mysql для nodejs. Лил немного не знает, как лучше всего работать с пулом.
var mysql = require('mysql');
var pool = mysql.createPool(...);
pool.getConnection(function(err, connection) {
// Use the connection
connection.query('SELECT something FROM sometable', function (error, results, fields) {
// And done with the connection.
connection.release();
// Handle error after the release.
if (error) throw error;
// Don't use the connection here, it has been returned to the pool.
});
});
Нужно ли нам вызывать метод release() каждый раз, когда мы выполняем запрос?
И еще один.
В чем разница между использованием пула напрямую для выполнения запроса и использованием метода getConnection, а затем выполнения запроса? Код с использованием пула:
var pool = mysql.createPool(...);
pool.query(...)
Используя метод getConnection, выполните запрос:
pool.getConnection(function(err, connection) {
connection.query(....);
});
Если вы попросите получить соединение, вы в основном зарезервируете это соединение на некоторое время. Это важно по двум причинам:
В библиотеке mysql не было бы возможности предсказать, что вы "выполнили" свою транзакцию, поэтому вам необходимо ее освободить.
Кроме того: вы должны рассмотреть возможность поиска в mysql2
для подобной библиотеки, которая более мощная, и использовать обещания вместо этого шаблона обратного вызова.
Обновление по комментариям
Когда вы делаете query
непосредственно в пуле, пул автоматически получит соединение, запустит запрос и отпустит его для вас.
Это полезно, если вам просто нужно сделать один запрос и не заботиться о транзакциях.