TypeError:undefined不是node.js / express.js中的函数

时间:2013-12-05 07:46:40

标签: javascript node.js express callback typeerror

我收到以下错误:TypeError:undefined不是函数

callback(null,array_reply,threadResults);

这部分看起来很糟糕,但我不知道为什么。

我需要你的帮助。感谢

async.waterfall([
    function (callback) {
        Model.find()
        .limit(10)
        .sort({pushed_date: 'desc'})
        .exec( function (err, results) {
            if (err) {
                log('Error: ' + err.message);
                callback(err);
                return;
            }
            var array_reply = new Array();

            async.forEachSeries(results,
            function (result, callback) {
                var reply = result.replies[result.replies_count];
                array_reply.push(reply);
            },callback);
            callback(null, array_reply);
        });
    },
    function (array_reply, callback) {
        Model.find()
        .limit(10)
        .sort( {replies_count: 'desc'} )
        .exec( function (err, results) {
            if (err) {
                callback(err);
                return;
            }
            callback(null, array_reply, results);
        });
    }
], function (err, array_reply, results) {
    if (err) {
        console.error("Error!");
        return next(err);
    }
    res.render("aaa.hbs",{
        models: results,
        posts: array_reply
    });
})

我改变了我的来源。

async.waterfall([
    function (callback) {
        Model.find()
        .limit(10)
        .sort({pushed_date: 'desc'})
        .exec( function (err, results) {
            if (err) {
                log('Error: ' + err.message);
                callback(err);
                return;
            }
            var array_reply = new Array();

            async.forEachSeries(results,
            function (result, callback) {
                var reply = result.replies[result.replies_count];
                array_reply.push(reply);
            },callback);
            callback(null, array_reply);
        });
    },
    function (array_reply, callback) {
        Model.find()
        .limit(10)
        .sort( {replies_count: 'desc'} )
        .exec( function (err, results) {
            if (err) {
                callback(err);
                return;
            }
           if (results.length > 0) {
                res.render("aaa.hbs",{
                    models: results,
                    posts: array_reply
                });
            } else {
                res.render("aaa.hbs",{
                    models: null,
                    posts: array_reply
                });
            }
        });
    }
], function (err) {
    if (err) {
        console.error("Error!");
        return next(err);
    }
})

1 个答案:

答案 0 :(得分:0)

有回调双重调用(可能会导致问题):

async.forEachSeries(results,
        function (result, callback) {
            var reply = result.replies[result.replies_count];
            array_reply.push(reply);
        },callback);
        callback(null, array_reply);

我想它可能如下:

async.forEachSeries(results,
        function (result, callback) {
            var reply = result.replies[result.replies_count];
            array_reply.push(reply);
        },
        function(err) {
           callback(err, array_reply);
        });