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
是一个数组,暗示位置参数的可能性。