【发布时间】:2013-09-13 03:45:44
【问题描述】:
在通过 LocomotiveJS 服务器对其进行任何查询之前,我想检查 MongoDB 连接并重新连接到它(如果它未处于“已连接”状态)。一种可能的方法是将它添加到之前的过滤器中。有没有办法为所有控制器定义一个前置过滤器?
【问题讨论】:
标签: express mongoose locomotivejs
在通过 LocomotiveJS 服务器对其进行任何查询之前,我想检查 MongoDB 连接并重新连接到它(如果它未处于“已连接”状态)。一种可能的方法是将它添加到之前的过滤器中。有没有办法为所有控制器定义一个前置过滤器?
【问题讨论】:
标签: express mongoose locomotivejs
我相信您可以使用 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 urls。
运行 this.use 或 this.get 函数的顺序很重要 - 在请求处理期间将首先调用第一个声明的处理程序。
【讨论】: