async.series / async.waterfall在post方法中有效吗?

问题描述 投票:0回答:1

我在post方法中使用了async.series,但它似乎不起作用,当调用post请求时页面显示404找不到。

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相当新,如果问题看起来很傻,请原谅我。

node.js asynchronous post async.js
1个回答
0
投票

异步库中的回调需要调用为:

callback(err, arg1, arg2, arg3);

首先使用err参数,然后使用其他可选参数。如果没有错误并且您希望继续处理,那么您将传递null以获取错误:

callback(null, arg1, arg2, arg3);

仅供参考,Javascript开发的趋势是“宣传”您拥有的任何异步操作(创建一个返回promise而不是使用普通回调的包装器),然后使用promise和async/await功能进行异步控制流和错误处理。我强烈建议用这种方式编写新代码,而不是使用传统回调的异步库。

node v10甚至包括一个fs库的promisified版本,越来越多的节点内部现在使用promises和async/await

© www.soinside.com 2019 - 2024. All rights reserved.