2014-05-21 11 views
14

Dokumentacja wskazuje, że można też korzystać z basenu bezpośrednio z:Różnica między używaniem metody getConnection() a używaniem puli bezpośrednio w pliku node.js z modułem node-mysql?

pool.query(); 

lub uzyskać połączenie ręcznie, a następnie uruchomić kwerendę:

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. 
    }); 
}); 

Druga opcja jest dużo kodu, który ma powtarzać za każdym razem, gdy trzeba uruchomić zapytanie. Czy można bezpiecznie korzystać z basenu? Czy pool.query() zwalnia połączenie z powrotem do puli, gdy jest to zrobione?

Odpowiedz

16

Pytanie uprzejmie odpowiedział przez dewelopera na github: https://github.com/felixge/node-mysql/issues/857#issuecomment-47382419

Czy można bezpiecznie korzystać z basenu tylko bezpośrednio?

Tak, tak długo, jak robisz zapytania pojedynczych instrukcji. Jedynym powodem, dla którego nie można użyć tego w powyższym przykładzie, jest robienie wielu zapytań, które muszą być wykonane w kolejności po w tym samym połączeniu. Wywołanie metody pool.query() może być różnym połączeniem za każdym razem, więc rzeczy takie jak FOUND_ROWS() nie będą działać tak, jak zamierzałeś , jeśli połączenie nie jest takie samo, jak w przypadku zapytania SQL_CALC_FOUND_ROWS . Użycie długiej metody pozwala trzymać na tym samym połączeniu dla wszystkich zapytań.

Does pool.query() zwolnić połączenie z powrotem do basenu, kiedy to zrobić?

Tak

Powiązane problemy