Sehen Sie sich den Beispielcode so an;
const mysql = require('mysql');
exports.base = (sql, data, callback) => {
// 創(chuàng)建數(shù)據(jù)庫連接
let connection = mysql.createConnection({
host: 'localhost', //數(shù)據(jù)庫所在的服務(wù)器域名或者IP
user: 'root', //用戶名
password: '', //密碼
database: 'book' //數(shù)據(jù)庫名稱
});
// 執(zhí)行連接動(dòng)作
connection.connect();
// 執(zhí)行數(shù)據(jù)庫操作
connection.query(sql, data, (err, rows) => {
if (err) throw err;
callback(rows);
});
// 關(guān)閉數(shù)據(jù)庫
connection.end();
}
So sollte es aussehen
const mysql = require('mysql');
exports.base = (sql, data, callback) => {
// 創(chuàng)建數(shù)據(jù)庫連接
let connection = mysql.createConnection({
host: 'localhost', //數(shù)據(jù)庫所在的服務(wù)器域名或者IP
user: 'root', //用戶名
password: '', //密碼
database: 'book' //數(shù)據(jù)庫名稱
});
// 執(zhí)行連接動(dòng)作
connection.connect();
// 執(zhí)行數(shù)據(jù)庫操作
connection.query(sql, data, (err, rows) => {
if (err) throw err;
callback(rows);
// 關(guān)閉數(shù)據(jù)庫
connection.end();
});
}
Ich bin nur der Meinung, dass das Schlie?en der Datenbankverbindung im Rückruf der Abfrage erfolgen sollte, wenn die Abfrage nicht abgeschlossen ist. Ist es dann unangemessen, die Datenbank zu schlie?en? nicht ganz klar;
Ich hoffe, alle kl?ren die Verwirrung auf
認(rèn)證0級講師
文檔:
Closing the connection is done using end() which makes sure all remaining queries are executed before sending a quit packet to the mysql server.
所以,調(diào)用了end()
不會(huì)馬上關(guān)閉連接,要等剩余的查詢執(zhí)行完才關(guān)閉,該觸發(fā)的回調(diào)還是觸發(fā)。destroy()
才是直接關(guān)閉連接。
具體實(shí)現(xiàn)就是把全部操作都放到隊(duì)列里執(zhí)行,end()
只是把一個(gè)Quit操作放入隊(duì)列,Quit操作執(zhí)行完之后才真正關(guān)閉。