Node.js 快速默认路由参数
我很惊讶我找不到这个,所以它以前可能已经被回答过了(我正在寻找错误的东西) 基本上,是否可能以及如何在nodejs express路由上设置默认值Node.js 快速默认路由参数,node.js,express,routes,Node.js,Express,Routes,我很惊讶我找不到这个,所以它以前可能已经被回答过了(我正在寻找错误的东西) 基本上,是否可能以及如何在nodejs express路由上设置默认值 // Test route router.route('/tests/:id') .get(testsController.tests.get); 如果未设置:id,它将自动设置为任意值,例如1 控制器代码: var testsController = { tests: { get: function (req, r
// Test route
router.route('/tests/:id')
.get(testsController.tests.get);
如果未设置:id
,它将自动设置为任意值,例如1
控制器代码:
var testsController = {
tests: {
get: function (req, res, next) {
if (req.params.id) {
res.render('tests.html', { title: 'The Site', id: req.params.id });
next();
} else {
//res.redirect('/')
console.log('here');
}
}
}
};
我知道在PHP Symfony2中,我可以执行以下操作:
/**
* @Route("/tests/{id}")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function testAction(Request $request, $id=1)
{
}
router.route('/tests/:id?')
.get(testsController.tests.get);
您正在正确设置该参数,但之后需要从请求对象获取该参数,该参数不会自动传递给操作:
req.params.id
[编辑]
要使参数成为可选参数,您应该如下定义路由:
/**
* @Route("/tests/{id}")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function testAction(Request $request, $id=1)
{
}
router.route('/tests/:id?')
.get(testsController.tests.get);
如果要设置默认值,请执行以下操作:
res.render('tests.html', { title: 'The Site', id: req.params.id || 1 });
这可能会帮助你啊,是的,这是有意义的,我意识到现在发生了什么(我也有一个控制器文件,我没有粘贴代码,现在将添加到我的问题)。所以基本上,因为有一个if语句,所以不设置它也没关系,因为你可以在那里设置它,然后再对它进行修改。我扩展了答案,我希望它是你需要的。太棒了,非常感谢:)从PHP切换到节点,仍然在学习什么是什么!