2014-02-17 68 views
1

我試圖從req.params讀取參數值,但以不同的方式(我試圖做一個API中的RESTify) 。我不能從req.params中的RESTify閱讀PARAMS值(節點JS)

首先我讀了req.params可用的密鑰,比如;

var requestData = Object.keys(request.params);

而且比我遍歷每個鍵,嘗試獲取它的價值。下面是代碼;

for(i = 1; i < requestData.length; i++) { 
      keyValue = requestData[i]; 
      console.log(request.params.keyValue); 
     } 

但輸出顯示爲UNDEFINED。

原因:我想讀取參數,因此,我不需要知道每個參數的名稱。

下面是完整的代碼:

var restify = require('restify'); 
var assert = require('assert'); 

var server = restify.createServer(); 
var client = restify.createStringClient({ 
    url: 'http://example.com' 
}); 

function onRequest(request, response, next) 
{ 
    console.log(request.params); 
     var requestData = Object.keys(request.params); 
     var customJsonString = ''; 
     var keyValue = ''; 

     for(i = 1; i < requestData.length; i++) { 
      keyValue = requestData[i]; 
      console.log(request.params.keyValue); 
      customJsonString += "" + requestData[i] + " : " + requestData[i] + ", "; 
     } 

     console.log(customJsonString); 
} 

function start() 
{ 
    server.use(restify.fullResponse()).use(restify.bodyParser()); 
    server.get(/^\/(.*)/, onRequest); 
    server.post(/^\/(.*)/, onRequest); 
    server.listen(8888); 

    console.log("Server has started."); 
} 

exports.start = start; 

我會很感激有關此問題的任何幫助。

回答

2

試試這個:

console.log(request.params[keyValue]); 

request.params.keyValue手段給我的財產keyValue的價值,而上面的代碼意味着給我他的名字被存儲在變量keyValue屬性的值。

另外,您確定要以i = 1開頭嗎? Javascript數組是基於0的,所以我認爲你需要i = 0

+0

你是男人。它爲我工作,我也理解你的觀點。而且,是的,我知道javascript數組從索引0開始,但我需要從索引1循環,以便我可以輕鬆地跳過索引0上的內容:) – Capri82

0

如果您可以給我們提供您正在測試的網址以及控制檯輸出您的網址,它可能會有所幫助。

但是,請注意,在Javascript陣列具有0的索引和你的循環應該是這樣的:

for(var i = 0; i < requestData.length; i++) { 
} 

要遍歷一個對象的屬性,你應該使用的for..in反正:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

我不知道這是否會解決你的問題,但它是一個開始。

+0

代碼在任何地方都不可用。這就是爲什麼我粘貼完整的代碼,所以你可以玩它。 – Capri82

+0

起始索引在這裏不是問題。 – Capri82