Express.js - 在URL中过滤mongodb id

时间:2013-10-04 17:05:47

标签: node.js mongodb filter express node-mongodb-native

这个问题受this post的启发,但在我的情况下,我需要过滤MongoId。是否可以轻松地进行下面的过滤,因为我需要在每条路线中使用它?

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

2 个答案:

答案 0 :(得分:7)

你几乎就在那里,只是不添加^$锚点。并且大写A-F范围甚至不是必需的,因为Express似乎与大小写不匹配:

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

答案 1 :(得分:1)

根据Express API documentation,是的,你可以使用正则表达式作为路径:

  

也可以使用正则表达式,如果有的话可以使用   非常具体的限制。

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);
});