我配置了以下路线
app.put('/v1/users/:uid', function(req, res){
res.send(req.route);
});
向http://localhost:3000/v1/users/blablabla
我得到以下输出
{
"path": "/v1/users/:uid",
"method": "put",
"callbacks": [
null
],
"keys": [
{
"name": "uid",
"optional": false
}
],
"regexp": {},
"params": []
}
正如您所见, params 数组似乎是空的,而不是具有值#34; blablabla"。但是" uid"键出现在键中,我不知道该怎么做。
感谢任何建议。
答案 0 :(得分:1)
好的,诀窍是Express使用a sparse array to parse the params。
当您将其传递给req.send
时,数组将使用JSON.stringify
进行转换。以下是JS shell中发生的事情:
> var params = [];
> params['uid'] = 1;
> params;
[ uid: 1 ]
> JSON.stringify(params);
'[]'
正在发生的事情是,向数组添加非数字不会改变其长度:
> params.length
0
因此JSON.stringify
忽略了新值。
答案 1 :(得分:0)
这是我见过的最奇怪的事情。
在执行console.log(req.params)
或console.log(req.route.params)
时,我得到一个空数组响应([]
)。
但是在做console.log(req.params.uid)
时,我得到了价值!这非常奇怪,但嘿,它的工作原理:)
干杯。