Работает ли async.series / async.waterfall внутри метода post? - PullRequest
0 голосов
/ 02 июля 2018

Я использовал 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, извините, если вопросы кажутся глупыми.

1 Ответ

0 голосов
/ 02 июля 2018

Обратные вызовы в асинхронной библиотеке должны вызываться как:

callback(err, arg1, arg2, arg3);

с аргументом err первым и другими необязательными аргументами после него. Если ошибки нет и вы хотите продолжить обработку, вы передаете null для ошибки:

callback(null, arg1, arg2, arg3);

К вашему сведению, тенденция развития Javascript заключается в том, чтобы «обещать» любые ваши асинхронные операции (создать оболочку, которая возвращает обещание вместо простого обратного вызова), а затем использовать обещание и функциональность async/await для асинхронного потока управления и ошибок. обработки. Я бы настоятельно рекомендовал писать новый код таким образом, а не использовать асинхронную библиотеку с традиционными обратными вызовами.

узел v10 даже включает обещанную версию библиотеки fs, и все больше и больше внутренних узлов узла используют обещания, и async/await теперь.

...