如何定位路线?' lang?'在中间件中

时间:2015-02-11 20:12:02

标签: javascript node.js express

我有这个中间件:

app
.use('/:lang?', middleware.setLanguage)
.use('/thanks/:lang?', middleware.setLanguage)
.use('/forum/:lang?', middleware.setLanguage);

我想在每个有lang的路由中使用一个名为setLanguage的函数,目前这段代码正在运行,但我可以相信它。

有人知道怎么做?我在文档中搜索,但没有找到任何东西..

1 个答案:

答案 0 :(得分:0)

使用.param预先处理参数,这样您就不必在每个使用它的路径上执行此操作。例如,这里开始使用moongoose为产品crud构建查询:

  app.param('product_id', function (req, res, next, product_id) {
    req.product_id = new ObjectId(product_id);
    req.product = Product.findOne(req.product_id);
    next();
  });

  // update product
  app.put('/products/:product_id', function (req, res) {
    Product.findOneAndUpdate(req.product_id, req.body, function (err, product) {
      res.json(product.toObject());
    });
  });

  // get product by id
  app.get('/products/:product_id', function (req, res) {
    req.product.lean().exec(function (err, product) {
      res.json(product);
    });
  });

我的所有路线都不必获取产品ID并将其转换为ObjectId,因为我预先为.param的所有路线做了。