Lihat kod contoh seperti ini;
const mysql = require('mysql');
exports.base = (sql, data, callback) => {
// 創(chuàng)建數(shù)據(jù)庫連接
let connection = mysql.createConnection({
host: 'localhost', //數(shù)據(jù)庫所在的服務器域名或者IP
user: 'root', //用戶名
password: '', //密碼
database: 'book' //數(shù)據(jù)庫名稱
});
// 執(zhí)行連接動作
connection.connect();
// 執(zhí)行數(shù)據(jù)庫操作
connection.query(sql, data, (err, rows) => {
if (err) throw err;
callback(rows);
});
// 關閉數(shù)據(jù)庫
connection.end();
}
Ia sepatutnya kelihatan seperti ini
const mysql = require('mysql');
exports.base = (sql, data, callback) => {
// 創(chuàng)建數(shù)據(jù)庫連接
let connection = mysql.createConnection({
host: 'localhost', //數(shù)據(jù)庫所在的服務器域名或者IP
user: 'root', //用戶名
password: '', //密碼
database: 'book' //數(shù)據(jù)庫名稱
});
// 執(zhí)行連接動作
connection.connect();
// 執(zhí)行數(shù)據(jù)庫操作
connection.query(sql, data, (err, rows) => {
if (err) throw err;
callback(rows);
// 關閉數(shù)據(jù)庫
connection.end();
});
}
Saya hanya merasakan bahawa penutupan sambungan pangkalan data harus dilakukan dalam panggilan balik pertanyaan Jika ia ditulis seperti cara pertama dan pertanyaan tidak selesai, adakah tidak sesuai untuk menutup pangkalan data ini? tidak begitu jelas;
認證0級講師
Dokumentasi:
Penutupan sambungan dilakukan menggunakan end() yang memastikan semua pertanyaan yang tinggal dilaksanakan sebelum menghantar paket berhenti ke pelayan mysql.
Jadi, panggilan end()
tidak akan menutup sambungan dengan serta-merta. Ia tidak akan ditutup sehingga pertanyaan selebihnya dilaksanakan. destroy()
menutup sambungan terus. end()
不會馬上關閉連接,要等剩余的查詢執(zhí)行完才關閉,該觸發(fā)的回調還是觸發(fā)。destroy()
才是直接關閉連接。
具體實現(xiàn)就是把全部操作都放到隊列里執(zhí)行,end()
end()
hanya meletakkan operasi Keluar ke dalam baris gilir, dan ia tidak benar-benar ditutup sehingga operasi Keluar dilaksanakan. ??