Locomotivejs在所有操作之前检查MongoDB连接

时间:2013-06-13 16:41:45

标签: express mongoose locomotivejs

我想检查MongoDB连接并重新连接到它,如果它没有处于“已连接”状态,那么在使用LocomotiveJS服务器进行任何查询之前。一种可能的方法是在before过滤器中添加它。有没有办法为所有控制器定义一个前置过滤器?

1 个答案:

答案 0 :(得分:1)

我相信你可以使用express(和LocomotiveJS对它来说)处理请求的方式。

在你的config / environments / all.js中(在所有this.use声明开始之前最好的地方)

this.use(function(req, res, next) {
    if (!isMongoInConnectedState()) {
        setMongoToConenctedState();
    }
    next();
});

这样,每次向服务器发出请求都会调用该函数。调用next()只是处理下一个处理程序的请求(在你的情况下是机车控制器)。

您还可以指定应该调用此检查功能的请求:

this.get(/^\/admin\/.*/, function(req, res, next) {
    if (!isMongoInConnectedState()) {
        setMongoToConenctedState();
    }
    next();
});

此处,只会检查/ admin / * GET网址。

运行this.use或this.get函数的顺序很重要 - 在请求处理期间首先调用第一个声明的处理程序。