【发布时间】:2018-07-02 23:03:57
【问题描述】:
我在我的 post 方法中使用了 async.series,但它似乎不起作用,当调用 post 请求时页面显示 404 not found。
router.route('/brandinsert')
.post((req, res, next) => {
console.log("inside post"); //terminates here
async.series({
one: (callback) => {
uploadImageOne(req, res, (err) => {
console.log('Inside uploadImageOne');
callback(req, res, err);
});
},
two: (callback) => {
uploadImageTwo(req, res, (err) => {
console.log('Inside uploadImageTwo');
callback(req, res, err);
});
},
}, (req, res, err) => {
console.log('Inside req,res,err'); //does not reach here
if(err){
console.log('error :' + err); //does not reach here
if (err == 'Error: imageExtensionError') {
res.json({
status: false,
msg: "File has invalid extension"
});
} else if (err == "Error: File too large") {
res.json({
status: false,
msg: "File size exceed the limit,Allowed limit is 3 MB"
})
} else {
console.log("err else section:" + err);
res.json({
status: false,
msg: genericErrorMessage
})
}
}else{
console.log("Inside else of insert");
let brandHeaderImg = req.body.brandHeaderImg;
let brandLogoImg = req.body.brandLogoImg;
let errorArray = [];
let msg = null;
//insert images into db
}
});
})
我没有明白我做错了什么,有人可以帮忙吗?我是 node.js 的新手,如果问题看起来很愚蠢,请原谅我。
【问题讨论】:
-
您在底部回调中的任何代码是否曾经使用
res创建响应? -
是的,
async.series()和async.waterfall()在路由处理程序中工作得很好(如果你正确使用它们)。如果我们能看到这个路由器处理程序的所有真实代码,我们可以提供更好的帮助。用很少的真实代码,我们所能做的就是猜测。这是我的第一个猜测。你在.post()处理程序中调用next()吗?如果是这样,那将在您的异步代码完成之前到达您的默认 404 处理程序。如果您自己发送响应并且不希望发生进一步的路由,请不要致电next()。 -
@PatrickRoberts 请检查我刚刚所做的编辑
-
这根本没有帮助。它仍然只是伪代码。您可以在您的
async.series()调用的完成回调中放置一个console.log(),以查看它是否到达那里。我们无法对此进行测试。 -
@jfriend00 不,我不会在
.post()内调用 next
标签: node.js asynchronous post async.js