如何在快递路由中将多个then
与相应的catch
链接起来。
我当前的用例是multupart form
更新的一部分我需要将图像上传到云并通过API更新细节,然后删除之前的图像。
有3种不同的电话。如果有任何错误,我会收到Error: Can't set headers after they are sent.
。看起来res.json
和next
正在创建一些问题
是否首选使用以下方法进行我的方案?
var rp = require('request-promise');
var multer = require('multer');
var storage = multer.memoryStorage();
var upload = multer({ storage: storage });
app.post('/api/update-details', upload.single('image'), function(req, res, next){
function uploadImage(){
//uploadToCloud is a dummy function to denote fileupload
uploadToCloudApi(function(err,data){
if(err) {
res.json({'msg': 'Image Upload Failed'})
}
})
}
function updateDetails(){
updateApi(function(err,data){
if(err) {
res.json({'msg': 'Image Upload Failed'})
}
})
}
function deletePreviousImage(){
deleteFromCloudApi(function(err,data){
if(err) {
log.error(err);
}
})
next();
}
function updateSiteError(){
}
var options = { // url and other options };
rp(options)
.then(uploadImage)
.then(updateDetails)
.then(deletePreviousImage)
.catch(updateSiteError); // How to write proper catch methods for each function ?
})