【问题标题】:Communication between middleware and route in keystonejskeystonejs 中的中间件和路由之间的通信
【发布时间】:2018-04-01 20:52:03
【问题描述】:

我正在使用 keystone 并且我有 productDetail 路由,我可以在 res.locals 中添加变量以在模板中使用。有没有办法可以在 middleware.js 文件中使用 res.locals (路由文件)?由于现在中间件在路由之前执行,所以我希望先执行路由文件。

这是在 index.js 文件中执行中间件的地方

keystone.pre('routes', middleware.initLocals);

然后我们有

exports = module.exports = function(app) {
  // Views
  app.get('/', routes.views.index);
  app.get('/product-detail/:product', routes.views.productDetails);
}

【问题讨论】:

    标签: node.js express keystonejs


    【解决方案1】:

    我不确定我是否收到了您的问题,但这可能会有所帮助。您可以在middleware.initLocals(显然首先运行)之后运行任意数量的自定义中间件。例如,在您的 routes/middleware.js 文件中,您可以有两个中间件:

    exports.middleware0 = function (req, res, next) {
            // Do some stuff
            next();
    };
    
    exports.middleware1 = function (req, res, next) {
            // Do some other stuff
            next();
    };
    

    然后,在您的 routes/index.js 中,您可以将中间件链接在一起:

    //...
    var middleware = require('./middleware');
    //...
    exports = module.exports = function (app) {
        // Use the middleware0 and middleware1:
        app.get('/product-detail/:product', [middleware.middleware0, middleware.middleware1], routes.views.productDetails);
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-10
      • 2017-10-11
      • 2016-05-03
      • 2015-09-28
      • 1970-01-01
      • 2015-11-16
      • 2017-05-02
      • 1970-01-01
      相关资源
      最近更新 更多