Пишу простой модуль pagination для приложения на Express.js:
var config = require('../config');
function Pagination(options) {
this.param = options.param || 'page';
//this.current = ?
this.perPage = options.perPage || config.perPage;
this.numPages = Math.ceil(options.numRows / this.perPage);
this.prevPage = null;
this.nextPage = null;
this.hasPrevPage = function() {
return (this.current > 1 && this.numPages);
}
this.hasNextPage = function() {
return (this.numPages > this.current);
}
if (this.hasPrevPage()) {
this.prevPage = this.current - 1;
}
if (this.hasNextPage()) {
this.nextPage = this.current + 1;
}
}
module.exports = Pagination;
В this.current мне нужно получить значения параметра, передающего страницу в постраничной навигации. Например для урла /posts/?page=3 this.current должно быть 3.
Пример применения модуля:
/app.js:
//...
var postsRoute = require('./routes/posts');
app.use('/posts', postsRoute);
/routes/posts.js:
var express = require('express');
var Pagination = require('../core/pagination');
var config = require('../config');
var router = express.Router();
router.get('/', function(req, res) {
//...
pagination = new Pagination({
numRows: dbresult.count
});
res.render('posts', {posts: dbresult.rows, pagination: pagination});
});
Я знаю, что можно получить значение параметра внутри обработчика роута и передавать в качестве аргумента в конструктор Pagination. Я хочу, чтобы модуль получал значение сам, без необходимости каждый раз передавать его из кода в обработчике роута.