如何在Nodejs中获得自定义api到jade文件的响应

时间:2016-03-03 10:33:30

标签: node.js api express pug

我使用Nodejs时遇到问题 我想做的是如下。我有一个API,我发送请求。当我从API获得响应时,我想将其发送到我的index.jade文件。我已经从我的API获得了响应,但仅在控制台中。不在我的html文件(index.jade)中。

代码如下:

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很新。

1 个答案:

答案 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)?
        });
    })
});