您好,请考虑以下代码。我想在关闭时调用db.close,但我不知道如何。
var restify = require('restify')
var sqlite3 = require('sqlite3').verbose()
var server = restify.createServer()
let db = new sqlite3.Database('data.db')
server.get('/conversations', (req, res, next) => {
let sql = 'SELECT * FROM Conversations'
db.all(sql, [], (err, rows) => {
if (err) throw err
res.send(rows)
return next()
})
})
server.listen(8080, () => console.log(`${server.name} listening at ${server.url}`))
我正在修改以下内容,但似乎不起作用。
process.on('SIGTERM', function () {
console.log('Closing')
server.close()
})
server.on('close', () => {
console.log('bye')
db.close()
})
有人有主意吗?
为了安全起见,我可能会在其中添加一些检查和事件。也许最好将关闭数据库与关闭服务器分开:
// so the app will not close instantly
process.stdin.resume();
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach((eventType) => {
process.on(eventType, cleanup.bind(null, eventType));
});
function cleanup(eventType) {
console.log(`cleanup ${eventType}`);
if (server) {
server.close();
}
if (db.open) {
db.close();
}
}
var server = restify.createServer();
let db = new sqlite3.Database('data.db');
server.on('close', () => {
console.log('bye');
});