如何使用'郎'在中间件中

How target routes with 'lang?' in a middleware

本文关键字:中间件 何使用      更新时间:2023-09-26

我有这个中间件:

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

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

有人知道怎么做?我在文档中搜索,但没有找到任何内容。。

使用.param预先处理参数,这样您就不必在使用它的每条路线上都这样做

  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.

对所有路线都进行了预先处理