我在person
集合中的MongoDB密钥是这样的:
TWITTER/12345678 GOOGLE/34567890 TWITTER/45678901 ...
我用getPersonByKey
这种方式定义路线:
router.route('/getPersonByKey/:providerKey/:personKey'). get(function(req, res) { // get person by key var key = req.params.providerKey + '/' + req.params.personKey; // ... } );
当然我更愿意写这样的东西:
router.route('/getPersonByKey/:key'). get(function(req, res) { // get person by key var key = req.params.key; // ... } );
但这不起作用,因为GET http://localhost/getPersonByKey/TWITTER/12345678
当然会产生404,因为带斜杠的参数被解释为两个不同的参数......任何想法?
Express内部使用path-to-regexp进行路径匹配.
如文档中所述,您可以通过在参数本身之后添加括号中包含的正则表达式来使用"自定义匹配参数".
您可以使用以下路径获取所需的结果:
router.route('/getPersonByKey/:key([^/]+/[^/]+)'). get(function(req, res) { // get person by key var key = req.params.key; // ... } );