“回调不是函数”Node.Js

时间:2016-03-03 02:36:05

标签: javascript node.js asynchronous callback

我有一个用Node编写的带有mysql的项目,async.waterfall

我还实现了async.waterfall以避免我最近关于'回调不是函数'的问题

但问题仍然存在。

这是我的async.waterfall

async.waterfall([
    function (callback) {
        hold.getEntry(function(data){
            var ref = data.ref;
            id = data.id;
            var message = data.mess;
            json = JSON.parse(message);

            return callback(null, {'ref':ref, 'id':id, 'json':json});
        });
    },
    function (dataa, callback) {
        if(dataa.ref === null){
            callback(null);
        }else{
            hold.checkPositionCandidate(dataa.ref, dataa.id, dataa.json, function(dataaa){
                return callback(null, dataaa);
            });
        }
    },
    function(anoData, callback) {
        console.log(anoData);
        if(anoData === true){

             //the err is here
            hold.getVoterCount(id, json, function(votercount){
                if(votercount == 0){
                } else {
                    console.log('last function');
                }
            });
        } else {
        }
    }
], function (err, results) {
   // When finished execute this
});

这是我的getVotercount函数

function getVoterCount (id, callback){
    pool.getConnection(function(err, con){
        con.query("select total_voters as tv from pollwatcher_view where party_id = ?", [id], function(err, rows){
        setTimeout(function(){

            //this callback is not a function
            callback(null, {'count':rows[0].tv});
            console.log(rows);
        }, 2000);
        }); 
    });
}

我非常接近完成我的项目,但是错误让我感到沮丧。请有人帮助我。

1 个答案:

答案 0 :(得分:1)

你似乎在打电话

hold.getVoterCount(id, json, function(votercount){
                if(votercount == 0){
                } else {
                    console.log('last function');
                }
            });

但是你的getVoterCount函数只定义了2个预期参数。我建议只尝试传递2个参数:

hold.getVoterCount(id, function(votercount){
            if(votercount == 0){
            } else {
                console.log('last function');
            }
        });