我在使用Express時遇到了一個很奇怪的事情,那就是req.params。它可以很好地調用下屬屬性 - 例如:res.json(req.params.paramName);給我所需的paramName值。但是當我試圖通過res.json(req.params)將整個res.params對象傳遞給客戶端時,我只是在瀏覽器中獲得一個空數組[],而不是我期待的JSON對象。 (res.send給出了相同的結果。)Express'req.params的格式是什麼?
看深一點,我甩req.params到控制檯:
console.dir(req.params);
,並得到這個:
[ creator: '1', timeStart: '2', timeEnd: '3', dateDensity: '4' ]
WUT?這甚至在JavaScript語法上是可能的嗎? 如果req.params就像快遞代碼和文檔的簡單對象表示,我應該得到:
{ creator: '1', timeStart: '2', timeEnd: '3', dateDensity: '4' }
像什麼我得到上面甚至應該是可能的,應該是一個數組?
我做了一些合理性檢查,並通過幾個試驗對象到控制檯,以及:
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工作OK 。
最後,我硬編碼一個:
res.json({foo:1, arr:2, gog:3, blah:4});
到我的快遞代碼和瀏覽器忠實地給我:這裏
{
"foo": 1,
"arr": 2,
"gog": 3,
"blah": 4
}
難道我抽菸破解? req.params正在發生什麼?
好的,我認爲這很有道理 - req.params被定義爲一個數組,但實際的參數通過標準的對象屬性存儲在它上,對嗎? – DanHeidel
雖然我對位置參數有點困惑。我認爲JS參數默認通過了positonally。 – DanHeidel
Js函數參數沒有連接來表示請求參數 – Eric