我为我的快递app编写简单的分页模块。这是代码:
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;
其中一个选项属性是 param 。它是get request参数的名称,默认情况下是" page"。例如,当路线是:
/posts/?page=3
pagination.current 设置为3
我假设在我的应用中使用此模块应该看起来像这样
app.js:
//...
var postsRoute = require('./routes/posts');
app.use('/posts', postsRoute);
(/路由/ 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,
perPage: config.perPage
});
res.render('posts', {posts: dbresult.rows, pagination: pagination});
});
因此,如果模块知道分页参数的名称,它应该能够获得它的值。如何在模块内部进行,而不是在每个路径内?仅使用基本节点功能是可取的。
答案 0 :(得分:1)
使用req.query.page
获取3.换句话说,
router.get('/posts', function(req, res) {
var page = req.query.page // = 3