如何使用Restify在关闭时关闭sqlite数据库?

问题描述 投票:0回答:1

您好,请考虑以下代码。我想在关闭时调用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()
})

有人有主意吗?

javascript node.js sqlite restify
1个回答
0
投票

为了安全起见,我可能会在其中添加一些检查和事件。也许最好将关闭数据库与关闭服务器分开:

// 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');
});
© www.soinside.com 2019 - 2024. All rights reserved.