如何访问node.js模块中的查询参数?

时间:2015-11-15 07:47:31

标签: javascript node.js express

我为我的快递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});
});

因此,如果模块知道分页参数的名称,它应该能够获得它的值。如何在模块内部进行,而不是在每个路径内?仅使用基本节点功能是可取的。

1 个答案:

答案 0 :(得分:1)

使用req.query.page获取3.换句话说,

router.get('/posts', function(req, res) {
    var page = req.query.page   // = 3