2015-12-07 5 views
3

Я удивлен, что не могу найти это, поэтому, вероятно, ответ был до (и я искал неправильную вещь).Экспресс по умолчанию параметр маршрута

В принципе, возможно ли и как установить значение по умолчанию для экспресс-маршрута nodejs?

// Test route 
router.route('/tests/:id') 
    .get(testsController.tests.get); 

Где, если :id не установлен, он будет автоматически установлен на произвольное значение, например, 1.

Controller Код:

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) 
{ 
} 
+0

Это, вероятно, может помочь вам HTTP : //expressjs.com/en/api.html#app.param – santaka

ответ

8

Вы устанавливаете его правильно, но вы должны получить параметр после от объекта запроса, он не передается автоматически в действие:

req.params.id 

[Edit] Чтобы сделать необязательный параметр, вы должны определить маршрут, как это:

router.route('/tests/:id?') 
    .get(testsController.tests.get); 

и если вы хотите, чтобы установить значение по умолчанию сделать что:

res.render('tests.html', { title: 'The Site', id: req.params.id || 1 }); 
+0

ах да, это имеет смысл, я понимаю, что происходит сейчас (у меня есть файл с контроллером, для которого я не вставлял код, добавит на мой вопрос сейчас). Так что в основном потому, что есть оператор if, не имеет значения, если он не установлен, потому что вы можете установить его там, а затем правильно? – timhc22

+0

Я расширил ответ, я надеюсь, что это то, что вам нужно – Joanvo

+1

удивительно, спасибо большое :) переключение с PHP на узел и все еще изучение чего-то! – timhc22

Смежные вопросы