我有这个中间件:
app
.use('/:lang?', middleware.setLanguage)
.use('/thanks/:lang?', middleware.setLanguage)
.use('/forum/:lang?', middleware.setLanguage);
我想在每个有lang的路由中使用一个名为setLanguage的函数,目前这段代码正在运行,但我可以相信它。
有人知道怎么做?我在文档中搜索,但没有找到任何东西..
答案 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的所有路线做了。