将req.params和req.url合并为express

时间:2014-12-18 18:12:41

标签: javascript node.js express

首先,我有以下路线:

route: '/list/:param1'

我将以下请求发送到服务器:

url: '/list/someParam?param2=foo&param3=bar

之后,快递给了我需要的两个重要对象,req.urlreq.params

我想得到一个合并url和params的对象。我使用以下代码:

module.exports = function (req, res, next) {
    var url = require('url');
    var queryObject = url.parse(req.url, true).query;

    console.log(queryObject);
    console.log(req.params);
    console.log(req.params.length);
}

所以记录如下:

{ param2: 'foo', param3: 'bar' }
[ param1: 'someParam' ]
0

现在,假设我不知道参数的名称,我需要一个包含req.urlreq.params信息的对象。以下是我的问题:

1)我该怎么做才能得到类似的东西:

{ param1: 'someParam', param2: 'foo', param3: 'bar' }

2)为什么req.params会记录类似数组的内容?如果它是一个数组,为什么它以0作为它的长度返回?

提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 使用req.query而不是再次解析网址。
  2. 我猜Express对该特定对象有一个自定义的toString实现。
  3. 您还可以使用req.param(name)

    按重要性顺序查找