0

我正在尝试使用 Async 让瀑布在 Node.js 中工作,但我不断收到错误消息

回调(null,articleDataSafe,req);^ 类型错误:未定义不是函数

代码如下

async.waterfall([
                        function sanitizeData (articleData, req, callback) {

                                articleDataSafe = sanitizeArticle(articleData);
                                console.log('s1');
                                callback (null, articleDataSafe, req);

                        },

                        function _validateData (articleDataSafe, req, callback) {

                               var errors = validateArticle(articleData);
                               var err = null;
                               if(errors.length > 0){
                                    // return error messages back to the browser
                                    err = JSON.stringify({'error': errors, "message": "fail"});
                                 };
                                console.log('s2');

                               callback (err, articleDataSafe, req);

                        },

                        function _saveArticle (articleDataSafe, req, callback) {

                                // work out the tags hash
                                var tags = articleDataSafe['tags'];
                                var tagsArray = tags.split(",");
                                tagsArray.sort();
                                var tagsString = tagsArray.join(); 
                                var hashedTags = sha512(tagsString);
                                articleDataSafe['hashedTags'] = hashedTags;

                                // then save the articles
                                var savedArticle = saveArticle(req, articleDataSafe);

                                console.log('s3');

                                if(!savedArticle){
                                    var err = JSON.stringify({'error': 'notSaveArticle', 'message': 'fail'});
                                }

                                callback (err, articleDataSafe);

                        },

                        function _saveTags (articleDataSafe, callback) {

                                var tagsDone = saveTags(articleDataSafe);

                                if(tagsDone.length > 0){
                                    // return error messages back to the browser
                                    var err = JSON.stringify({'error': tagsDone, "message": "fail"});
                                 };
                                console.log('s4');

                                callback (err, articleDataSafe);

                        },

                        function _saveTagSets (articleDataSafe, callback) {

                                var tagSetsDone = saveTagSets(data);

                                if(tagSetsDone.length > 0){
                                    // return error messages back to the browser
                                    var err = JSON.stringify({'error': errors, "message": "fail"});
                                 };
                                console.log('s5');

                                callback (err, articleDataSafe);

                        }
                    ], function (error, success) {

                        var responseMessage = {'error': '', "message": "success"};

                        if (error) { 
                            responseMessage = error; 
                        } 

                        res.end(JSON.stringify(responseMessage));

                    });

任何人都可以解释出了什么问题。我已经尝试了很长时间,但没有运气。

任何帮助将不胜感激。

谢谢, Cs1h

4

1 回答 1

3

第一个函数除了回调之外没有传递其他参数。你需要这样开始:

async.waterfall([
    function sanitizeData (callback) {
//                        ^^^^^^^^^^ no articleData, no req
        articleDataSafe = sanitizeArticle(articleData);
        console.log('s1');
        callback (null, articleDataSafe, req);
    },
    …

但是我怀疑你是否需要异步。

于 2015-02-03T21:18:52.013 回答