Sehen Sie sich den Beispielcode so an;
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();
}
So sollte es aussehen
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();
});
}
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
文档:
所以,调用了
end()
不会马上关闭连接,要等剩余的查询执行完才关闭,该触发的回调还是触发。destroy()
才是直接关闭连接。具体实现就是把全部操作都放到队列里执行,
end()
只是把一个Quit操作放入队列,Quit操作执行完之后才真正关闭。