Express'req.params的格式是什么?

在使用Express时,我遇到了与req.params有关的奇怪事情。 它适用于调用下属属性 – 例如:res.json(req.params.paramName); 给我所需的paramName值。 但是,当我试图通过res.json(req.params)将整个res.params对象传递给客户端时,我只是在浏览器中获得一个空数组[],而不是我期待的JSON对象。 (res.send给出了相同的结果。)

再深入一点,我把req.params放到了控制台上:

console.dir(req.params); 

得到这个:

 [ creator: '1', timeStart: '2', timeEnd: '3', dateDensity: '4' ] 

武汉理工大学? 这甚至在JavaScript语法上是可能的吗? 如果req.params是一个简单的对象,如Express代码和文档所示,我应该得到:

 { creator: '1', timeStart: '2', timeEnd: '3', dateDensity: '4' } 

像上面得到的数组应该是可能的,应该吗?

我做了一些理智的检查,并将一些testing对象传递给控制台:

 console.dir([{foo:1}, {arr:2}, {gog:3}, {blah:4}]); console.dir({foo:1, arr:2, gog:3, blah:4}); 

和控制台转储给我:

 [ { foo: 1 }, { arr: 2 }, { gog: 3 }, { blah: 4 } ] { foo: 1, arr: 2, gog: 3, blah: 4 } 

所以console.dir工作正常。

最后,我硬编码一个:

 res.json({foo:1, arr:2, gog:3, blah:4}); 

进入我的Express代码和浏览器忠实地给我:

 { "foo": 1, "arr": 2, "gog": 3, "blah": 4 } 

我在这里抽烟吗? 什么是req.params?

这就是v8如何用string键输出数组:

 var myArr = []; myArr.key = "oops"; 

记住, [] instanceof Object是真实的。

req.params是一个数组,暗示位置参数的可能性。