2017-08-03 33 views
0

下面是我在快遞(node.js中)代碼如何在express.post()函數內返回promise或resolve拒絕?

router.post('/example.json', function (req, res) { 

    // getFileInfo is a function to return a array 
    return getFileInfo(req.body.fileList).then((array) => { 

    axios({ 
    method: 'post', 
    url: 'http://localhost:5000/sendTestImage.json', 
    data: { 
     file: array 
    } 
    }).then((res) => { 
    return Promise.resolve(); 
    }).catch((err) => { 
    return Promise.reject(); 
    }) 
}); 

如何返回一個承諾解決或拒絕完成時調用Axios公司,並返回到客戶端,它叫「/example.json」?

+0

首先,我想知道爲什麼您需要解決此處的承諾? – siva

+0

,因爲客戶端使用軸並在承諾解析後執行某些操作。 – Dreams

+0

是的,我希望客戶在獲得響應數據後會做些什麼。實際上你打電話的時候是一個異步調用,所以當它被解析時它將會來到'.then'或者如果它被拒絕的處理程序將會被捕獲。如果您的通話來到'.then'塊,您可以發送數據。 – siva

回答

2

如果調用成功,則不應該返回任何內容,只需將數據發送到客戶端即可。如果發生錯誤,請設置正確的http響應狀態併發送錯誤:

router.post('/example.json', function (req, res) { 
    getFileInfo(req.body.fileList) 
    .then(array => { 
     return axios({ 
     method: 'post', 
     url: 'http://localhost:5000/sendTestImage.json', 
     data: { 
      file: array 
     } 
    }) 
    .then(data => res.send(data)) 
    .catch(err => res.status(400).send(err)); 
}); 
+0

真的很感激! – Dreams

相關問題