我使用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很新。
答案 0 :(得分:1)
如果我抓到你,请尝试更改您的密码,如下所示。我发现在不同的回调函数中有相同的req
和res
变量,这会让人感到困惑......
所以我认为可能是相同的变量名称导致您的问题,只需将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)?
});
})
});