Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我使用express for node.js获取带有参数的冒号_Node.js_Rest_Express_Routing - Fatal编程技术网

我使用express for node.js获取带有参数的冒号

我使用express for node.js获取带有参数的冒号,node.js,rest,express,routing,Node.js,Rest,Express,Routing,以下是我的路线: router.route('/search:word').get(function(req, res) { var re = new RegExp(req.params.word, 'i'); console.log(req.params.word); Place.find().or([{ 'title': { $regex: re }}, { 'category': { $regex: re }}]).sort('title').exec(function(er

以下是我的路线:

router.route('/search:word').get(function(req, res) {
  var re = new RegExp(req.params.word, 'i');
  console.log(req.params.word);

  Place.find().or([{ 'title': { $regex: re }}, { 'category': { $regex: re }}]).sort('title').exec(function(err, places) {
    res.json(JSON.stringify(places));
  });
});
当我使用request
/places/search:test
时,控制台显示:test,而不仅仅是“test”。
知道发生了什么吗?

这里发生的是,它正在打破通往
/search[word]
的路径。因此,当您请求
/search:test
时,[word]会匹配
/search
之后的部分,在这种情况下,这将是
:test


你可能需要的是这样的:
/search::word
你真的想用
router.route('/search:word')
而不是
router.route('/search/:word')
?在那里使用冒号似乎有点奇怪

如果您使用
router.route('/search/:word')
,并且您的请求是

/places/search/test


然后,如果您想要相同的模式api端点,例如:
/places/search:test
,那么您将获得
req.params.word=“test”
端点必须使用双冒号。示例-

router.route('/search::word').get(function(req, res) {
   console.log(req.params.word); ---> "test"
});

这就是为什么你会得到额外的冒号:test

我明白了,但是如果我真的想要一个像
/search:word
这样的端点,我在读取参数时是否必须自己删除冒号呢?是不是应该这样?我正在学习休息和表达。。。如果这是一个愚蠢的问题,很抱歉。如果您想将端点“search:word”作为文本字符串而不是参数,则可能需要添加另一个冒号来转义它,如msdex所述:“/search::word”。不过我不会用冒号。它似乎打破了宁静的设计模式。我会在它们之间使用斜杠(“/”),我的例子是/places/search/:word,添加另一个冒号后效果很好。但是我读过很多关于Express中路由参数的文章,都提到只使用一个冒号。你能提供关于两个冒号的参考资料吗?谢谢。