Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Node.js 快速默认路由参数_Node.js_Express_Routes - Fatal编程技术网

Node.js 快速默认路由参数

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

我很惊讶我找不到这个,所以它以前可能已经被回答过了(我正在寻找错误的东西)

基本上,是否可能以及如何在nodejs express路由上设置默认值

// 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切换到节点,仍然在学习什么是什么!