推迟所有请求,直到连接数据库

时间:2016-03-11 09:22:04

标签: node.js database azure asynchronous restify

我的Restify服务器依赖于通过异步函数和回调建立的数据库连接。我在Azure上托管它,服务器在一段时间不活动后关闭,但是当它唤醒时,它会重新启动Node.js。

这导致了一个错误,其中一个请求唤醒了服务器,由于尚未建立数据库连接而导致服务器崩溃。处理此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我找到了一个似乎有效的解决方案,虽然我不明白为什么:

首先立即调用Restify中的任何use函数,然后在连接数据库后调用listen函数。这是一个例子:

var server = restify.createServer({
    name: 'Example',
});

server.use(restify.bodyParser());
server.use(restify.queryParser());

function initializeServer() {
    server.listen(80);
    console.log("The server is now active.");
}

var database = new sql.Connection(function (err) {
    if (err) {
        console.log(err);
    } else {
        initializeServer();
    }
});