2015-01-12 4 views
1
var s_bookingController = require('s/controllers); 

app.get('/dashboard/:page/:param', s_bookingController.index) 
app.get('/dashboard/show/:id', s_bookingController.show); 

контроллеры:Как использовать следующий() правильно в маршрутах (Node.js)

exports.index = function(req, res, next) { 
    var page = parseInt(req.param("id")); 

    data = {}; 
    data.page = page; 
    data.nextPage = page + 1; 
    data.prevPage = page - 1; 

    MyModel.find().sort('brand').skip((page-1)*11).limit(11).exec(function(err, result) { 
     res.render('index', { 
      data: data, 
      booking: result, 
     }); 
    }); 
}; 

И

exports.show = function(req, res, next) { 
    var id = req.param("id"); 

    res.send(id); 
}; 

Я использую эти контроллеры, но есть что-то не так с код exports.index, потому что он застрял в коде.

Если изменить маршруты на:

app.get('/dashboard/:page', s_bookingController.index) 

(Обратите внимание, что я взлетать второй параметр, который я проходил)

шоу будет работать, но если я использую второй параметр , показ не будет запущен, он застрянет на индексной странице.

Почему это? Мне было интересно, нужно ли мне использовать next();.

+1

Поместите маршрут 'show' выше первого –

+2

отсутствует тег? (узел не определяет приложение или маршруты) – dandavis

+0

Возможный дубликат [С трудом пытаясь понять «next/next()» в express.js] (http://stackoverflow.com/questions/8710669/having-a -hard-time-try-to-understand-next-next-in-express-js) – Seth

ответ

0

Расширяя свой комментарий:

Вы должны иметь следующий порядок маршрутов:

app.get('/dashboard/show/:id', s_bookingController.show); 
app.get('/dashboard/:page/:param', s_bookingController.index); 

Экспресс маршрутизации требует, чтобы более конкретный маршрут должен быть размещен над более общим.

/dashboard/show/:id более конкретно в этом случае, так как /dashboard/:page/:param покрывает его, так что обрабатывается /dashboard/show. Когда маршрут обрабатывается, следующие маршруты не выполняются.

+0

Большое спасибо. –

+0

Я понял .. но, каковы критерии? Почему шоу более конкретное @ VsevolodGoloviznin ?? –

+0

Часть ': page' охватывает' show' –

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