Lihat kod contoh seperti ini;
const mysql = require('mysql');
exports.base = (sql, data, callback) => {
// 創(chuàng)建數(shù)據(jù)庫(kù)連接
let connection = mysql.createConnection({
host: 'localhost', //數(shù)據(jù)庫(kù)所在的服務(wù)器域名或者IP
user: 'root', //用戶(hù)名
password: '', //密碼
database: 'book' //數(shù)據(jù)庫(kù)名稱(chēng)
});
// 執(zhí)行連接動(dòng)作
connection.connect();
// 執(zhí)行數(shù)據(jù)庫(kù)操作
connection.query(sql, data, (err, rows) => {
if (err) throw err;
callback(rows);
});
// 關(guān)閉數(shù)據(jù)庫(kù)
connection.end();
}
Ia sepatutnya kelihatan seperti ini
const mysql = require('mysql');
exports.base = (sql, data, callback) => {
// 創(chuàng)建數(shù)據(jù)庫(kù)連接
let connection = mysql.createConnection({
host: 'localhost', //數(shù)據(jù)庫(kù)所在的服務(wù)器域名或者IP
user: 'root', //用戶(hù)名
password: '', //密碼
database: 'book' //數(shù)據(jù)庫(kù)名稱(chēng)
});
// 執(zhí)行連接動(dòng)作
connection.connect();
// 執(zhí)行數(shù)據(jù)庫(kù)操作
connection.query(sql, data, (err, rows) => {
if (err) throw err;
callback(rows);
// 關(guān)閉數(shù)據(jù)庫(kù)
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;
認(rèn)證0級(jí)講師
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()
不會(huì)馬上關(guān)閉連接,要等剩余的查詢(xún)執(zhí)行完才關(guān)閉,該觸發(fā)的回調(diào)還是觸發(fā)。destroy()
才是直接關(guān)閉連接。
具體實(shí)現(xiàn)就是把全部操作都放到隊(duì)列里執(zhí)行,end()
end()
hanya meletakkan operasi Keluar ke dalam baris gilir, dan ia tidak benar-benar ditutup sehingga operasi Keluar dilaksanakan. ??