为什么req.params返回一个空数组?

时间:2012-05-09 20:29:56

标签: node.js express

我正在使用Node.js,我想查看已发布到我的脚本的所有参数。为了实现我的功能,在routes/index.js我正在做的事情:

app.post('/v1/order', order.create);

然后在我的功能中,我有:

exports.create = function(req, res, next) {
 console.log( req.params );

但是它返回一个空数组。但是当我这样做时:

exports.create = function(req, res, next) {
 console.log( req.param('account_id') );

我得到数据。所以我对这里发生的事情感到有些困惑。

3 个答案:

答案 0 :(得分:29)

req.params只包含路由参数,而不是查询字符串参数(来自GET)而不是正文参数(来自POST)。然而,param()函数检查所有三个,参见:

http://expressjs.com/4x/api.html#req.params

答案 1 :(得分:23)

<强> here
只能以这种模式获取请求网址的参数:/user/:name

<强> req.params
获取查询参数(名称),如/user?name=123或身体参数。

答案 2 :(得分:2)

我遇到了类似的问题,并且出于同样的原因,我想为那些来这里的人发布解决方案。我的req.params作为空对象出现,因为我在父路由中声明了URL变量。解决方案是将此选项添加到路由器:

const router = express.Router({ mergeParams: true });