2016-03-03 13 views
1

我在使用Nodejs時遇到問題 我想要做的事情如下。我有一個API發送請求。當我從API獲取響應時,我想將其發送到我的index.jade文件。我已經從我的API獲得響應,但只能在控制檯中響應。不在我的html文件(index.jade)中。如何從Nodejs中的自定義api獲取對玉文件的響應

的代碼如下:

app.js

app.get('/', function(req, res) { 
var postData = '{'+ 
    ' "limit": "10",'+ 
    ' "page": 1,'+ 
    ' "filters": {'+ 
    ' "genre": [],'+ 
    ' "region": "",'+ 
    '"prices": 2,'+ 
    ' "distance": 31,'+ 
    ' "longitude": "4.646219",'+ 
    ' "latitude": "52.387388",'+ 
    ' "eves": 1,'+ 
    '"from_date": "17-12-2015",'+ 
    '"end_date": "18-12-2014"'+ 

    '}'+ 
    '}'; 



var options = { 
    hostname: 'API url', 
    path: 'api path', 
    method: 'POST', 
    headers: { 
     'Content-Type': 'application/json', 
     'Content-Length': postData.length, 

    } 
}; 

var req = http.request(options, (res) => { 
    console.log(`STATUS: ${res.statusCode}`); 
    console.log(`HEADERS: ${JSON.stringify(res.headers)}`); 
    res.setEncoding('utf8'); 

    res.on('data', (chunks) => { 
    console.log(`BODY: ${chunks}`); 
     var response = JSON.parse(chunks) 
     res.render('index',{ 
     value: response 
     }); 
    }); 
    res.on('end',() => { 
     console.log('No more data in response.') 
    }) 
}); 

req.on('error', (e) => { 
    console.log(`problem with request: ${e.message}`); 
}); 
    res.on('data', function(chunk){ 
      body += chunk; 


     }); 

     res.on('end', function(){ 
      var response = JSON.parse(body) 
      console.log(response) 
      console.log("Successful") 

     }); 

index.jade

p #{value} 

注:我很新的節點JS。

+0

與index.jade文件,你把相同的文件夾與app.js文件? 因爲我看到你的代碼:res.render('index',{ value:response }); – DinhNC

+0

不,我沒有那樣做代碼insinuate那。 –

+0

我在代碼中看到的是,這不是問題,因爲我也發送了一個標題,它顯示在右側頁面上。它可能是它的功能錯誤 –

回答

1

如果我找不到,請嘗試更改您的代碼,如下所示。我發現有不同的回調函數相同reqres變量,它會帶來混淆這裏...

所以我想,也許相同的變量名會導致您的問題,只是改變的res一個resp來區分他們,也許它可以幫助你。

var req = http.request(options, (resp) => { 
    var buffer = ""; 

    console.log(`STATUS: ${resp.statusCode}`); 
    console.log(`HEADERS: ${JSON.stringify(resp.headers)}`); 
    resp.setEncoding('utf8'); 

    resp.on('data', (chunks) => { 
    console.log(`BODY: ${chunks}`); 
     buffer += chunks; // accumulate data here 
    }); 
    resp.on('end',() => { 
     console.log('No more data in response.'); 
     res.render('index',{ // send the data received to client 
      value: buffer // maybe need to JSON.parse(buffer)? 
     }); 
    }) 
}); 
+0

有了這段代碼,我得到了index.jade中的結果(當我將JSON.parse(chuck)替換爲塊時)但是index.jade中只有1個結果,它應該給我更多的結果 –

+0

我還看到的是當我刷新它多次給了我更多的結果,但是當我刷新它時,它給了我更少的結果。所以我認爲我沒有足夠長的時間來等待api的結果,有沒有辦法解決這個問題? –

+0

@rahuls,如果我正確地得到了你,請參考我更新的答案。 – zangw

相關問題