在使用 LocomotiveJS 服务器对其进行任何查询之前,我想检查 MongoDB 连接并在它未处于“已连接”状态时重新连接到它。一种可能的方法是将它添加到之前的过滤器中。有没有办法为所有控制器定义一个前置过滤器?
问问题
155 次
1 回答
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 url 进行检查。
运行 this.use 或 this.get 函数的顺序很重要 - 在请求处理期间,首先声明的处理程序将首先被调用。
于 2013-09-12T19:45:44.367 回答