Express.js – 在URL中过滤一个mongodb标识

这个问题启发了这个职位,但在我的情况下,我需要过滤MongoId。 是否可以轻松地进行筛选,因为我需要在每个path中使用它?

app.post('/:mongoId(^[0-9a-fA-F]{24}$)', function(req, res){ // Send query based on mongoId } 

你几乎在那里,只是不添加^$锚。 而大写AF范围甚至没有必要,因为Express似乎匹配不区分大小写:

 app.post('/:mongoId([0-9a-f]{24})', function(req, res){ var id = req.param('mongoId'); ... }); 

根据Express API文档 ,是的,您可以使用正则expression式作为path:

正则expression式也可以使用,如果你有非常特殊的限制,可以使用正则expression式。

 app.get(/^\/commits\/(\w+)(?:\.\.(\w+))?$/, function(req, res){ var from = req.params[0]; var to = req.params[1] || 'HEAD'; res.send('commit range ' + from + '..' + to); });