2014-05-21 11 views
14

Các tài liệu nói rằng bạn có thể sử dụng hồ bơi trực tiếp với:Sự khác biệt giữa việc sử dụng getConnection() và sử dụng nhóm trực tiếp trong node.js với mô đun node-mysql?

pool.query(); 

hoặc có được một kết nối bằng tay và sau đó chạy một truy vấn:

pool.getConnection(function(err, connection) { 
    // Use the connection 
    connection.query('SELECT something FROM sometable', function(err, rows) { 
    // And done with the connection. 
    connection.release(); 

    // Don't use the connection here, it has been returned to the pool. 
    }); 
}); 

Lựa chọn thứ hai là rất nhiều mã có được lặp lại mỗi khi bạn cần chạy truy vấn. Có an toàn khi chỉ sử dụng hồ bơi trực tiếp không? pool.query() có phát hành lại kết nối vào hồ bơi khi hoàn thành không?

Trả lời

16

Câu hỏi vui lòng trả lời của nhà phát triển trên github: https://github.com/felixge/node-mysql/issues/857#issuecomment-47382419

Có an toàn để chỉ sử dụng hồ bơi trực tiếp?

Có, miễn là bạn đang thực hiện các truy vấn tuyên bố đơn lẻ. Lý do chỉ bạn không thể sử dụng trong ví dụ trên là vì bạn đang thực hiện nhiều truy vấn cần phải được thực hiện theo thứ tự tuần tự trên cùng một kết nối. Gọi pool.query() có thể là các kết nối khác nhau mỗi lần, vì vậy những thứ như FOUND_ROWS() sẽ không hoạt động như bạn dự định nếu kết nối không giống như kết nối đã thực hiện truy vấn SQL_CALC_FOUND_ROWS. Sử dụng phương pháp dài cho phép bạn giữ lên cùng một kết nối cho tất cả các truy vấn của bạn.

Có pool.query() giải phóng kết nối lại vào hồ bơi khi đó là được thực hiện?

Các vấn đề liên quan