Lihat kod contoh seperti ini;
const mysql = require('mysql');
exports.base = (sql, data, callback) => {
// 创建数据库连接
let connection = mysql.createConnection({
host: 'localhost', //数据库所在的服务器域名或者IP
user: 'root', //用户名
password: '', //密码
database: 'book' //数据库名称
});
// 执行连接动作
connection.connect();
// 执行数据库操作
connection.query(sql, data, (err, rows) => {
if (err) throw err;
callback(rows);
});
// 关闭数据库
connection.end();
}
Ia sepatutnya kelihatan seperti ini
const mysql = require('mysql');
exports.base = (sql, data, callback) => {
// 创建数据库连接
let connection = mysql.createConnection({
host: 'localhost', //数据库所在的服务器域名或者IP
user: 'root', //用户名
password: '', //密码
database: 'book' //数据库名称
});
// 执行连接动作
connection.connect();
// 执行数据库操作
connection.query(sql, data, (err, rows) => {
if (err) throw err;
callback(rows);
// 关闭数据库
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;
Dokumentasi:
Jadi, panggilan
end()
tidak akan menutup sambungan dengan serta-merta. Ia tidak akan ditutup sehingga pertanyaan selebihnya dilaksanakan.destroy()
menutup sambungan terus.end()
不会马上关闭连接,要等剩余的查询执行完才关闭,该触发的回调还是触发。destroy()
才是直接关闭连接。具体实现就是把全部操作都放到队列里执行,
Pelaksanaan khusus adalah untuk meletakkan semua operasi ke dalam baris gilir untuk pelaksanaanend()
end()
hanya meletakkan operasi Keluar ke dalam baris gilir, dan ia tidak benar-benar ditutup sehingga operasi Keluar dilaksanakan. 🎜