2016-03-03 36 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

相关问题