0

我配置了以下路线

app.put('/v1/users/:uid', function(req, res){
            res.send(req.route);
        });

发送 PUT 请求时http://localhost:3000/v1/users/blablabla

我得到以下输出

{
   "path": "/v1/users/:uid",
   "method": "put",
   "callbacks": [
       null
   ],
   "keys": [
       {
           "name": "uid",
           "optional": false
       }
   ],
   "regexp": {},
   "params": []
}

如您所见,params数组似乎是空的,而不是值“blablabla”。但是“uid”键出现在键中,我真的不知道该怎么做。

将不胜感激任何建议。

4

2 回答 2

1

好的,诀窍是 Express 使用稀疏数组来解析 params

当您将它传递给 时req.send,数组将转换为JSON.stringify。以下是 JS shell 中发生的情况:

> var params = [];
> params['uid'] = 1;
> params;
[ uid: 1 ]
> JSON.stringify(params);
'[]'

发生的事情是向数组添加非数字不会改变它的长度:

> params.length
0

所以新值被忽略JSON.stringify

于 2013-08-20T13:49:27.123 回答
0

嗯,这是我见过的最奇怪的事情。

执行 a console.log(req.params)or时,console.log(req.route.params)我得到一个空数组响应 ( [])。

但是当我做的时候,console.log(req.params.uid)我得到了价值!那非常奇怪,但是嘿,它有效:)

干杯。

于 2013-08-20T14:03:46.307 回答