2017-10-20 139 views
1

我正在使用express.js創建代理服務器來處理來自網站的調用,操作請求,然後向第三方提供者發出請求。我需要等待第三方響應才能響應我的網站,但無法找到一種方法來快速等待響應。等待HTTP響應來解析函數

我的控制文件是

const model = require('../models/ticketmaster') 

const startHour = 'T00:00:00Z' 
const endHour = 'T23:59:59Z' 

function getData(req, res) { 
model({ startDateTime: req.query.startDateTime + startHour, endDateTime: req.query.endDateTime + endHour},res) 
res.status(200).send() 
} 

module.exports = getData; 

和模型文件是

const request = require('request'); 
const config = require ('../config.js'); 

module.exports = (req, res) => { 

request.get(`${config.ticketmasterApiUrl}&startDateTime=${req.startDateTime}&endDateTime=${req.endDateTime}`) 
.on('finished', (res) => { 
     console.log(res.status) 
    }) 
    .pipe(res) 
} 
+0

我很困惑。難道你不需要刪除'res.status(200).send()'這一行嗎? – skirtle

+0

通過這樣做,我得到的錯誤'未處理的拒絕StatusCodeError:400' –

+0

這聽起來像一個承諾的問題,但我沒有看到任何承諾在您的代碼和'請求'不使用承諾。 – skirtle

回答

0

更改此:

​​

要:

request.get(`${config.ticketmasterApiUrl}&startDateTime=${req.startDateTime}&endDateTime=${req.endDateTime}`) 
     .pipe(res) 

默認情況下,它只在請求恢復後才管,所以你不需要on.('finished'