2015-01-13 2 views
0

Я использую Sails JS, стек PostgreSQL.Sails JS Конфигурированный маршрут в маршрутах Возвраты JS Не найдено

Я хочу передать два идентификатора в качестве параметров в конце URL-адрес, как показано ниже:

/getLocation/куб.см/повторного

Где куб.см 'представляет собой две буквы кода страны, например, US и 're' - это автозаполнение запроса для региона страны, указанного в 'cc'.

При использовании только работ cc добавление дополнительного параметра приводит к созданию страницы «Не найдено».

Вот это 'конфигурации/маршруты':

'get /location/getRegion/:cc/:re': 'LocationController.getRegion' 

указательного сказать:

'локальный/местоположение/getRegion/нас/или'

дает в результате 404.

В то время как:

'локальный/местоположение/getRegion/нас'

работает, но очевидно, что это выводит все регионы/штаты в США. Второй параметр должен дополнительно фильтровать этот результат, используя 'contains'

Любые идеи о том, как я могу достичь желаемого результата с использованием двух параметров?

Вот

getRegion

код в моем

LocationController

module.exports={ 
     getRegion:function(req, res, next){ 
     Regions.find({where:{country_code:req.param('cc')},region:{'contains':req.param('id')}},function selectRegions(err, regions){ 
      console.log(req.param('cc')) 
      if(err) return next(err); 
      if(!regions) return next(); 
      console.log(regions) 
      res.json(regions) 
     }) 
    } 
} 
+1

Работает для меня с простым обработчиком ... можете ли вы отправить код 'getRegion'? – sgress454

+0

@ sgress454 Хорошо, спасибо. См. Править. – watkib

ответ

0

Ваш Contro ller-код является хорошей демонстрацией того, почему мы препятствуем использованию next в действиях контроллера Sails: это может усложнить задачу отладки. В вашем случае, у вас есть следующие в ваших find критериев:

region:{'contains':req.param('id')} 

, где вы, вероятно, имел в виду req.param('re'), так как маршрут не дает id параметр. Таким образом, запрос всегда не возвращает никаких результатов, и вы в конечном итоге вызываете next(), который возвращает управление маршрутизатору Sails, который не соответствует никаким другим маршрутам и бинго, 404.Если вы изменили это:

if(!regions) return next(); 

в

if(!regions) return res.notFound(); 

это будет иметь тот же эффект, но вы, вероятно, поймали на рано, что происходит.