簡體   English   中英

未定義的NodeJs不是函數

[英]NodeJs undefined is not a function

我正在使用NodeJs運行此代碼,這是我的自定義模塊

call = {};
call.hangup = {
    searching: function(number, mysql, validator){
        this.number = number;
        this.mysql = mysql;
        this.validator = validator;
        var query = "{sql...}";
        try
        {   
            mysql.query(query, function(err, rows, fields) {        
            if (err) throw err; 
                if(!validator.isNull(rows))
                {                                       
                    return rows.leadid;                     
                }else {
                    return false;
                }
            });
        }catch(error)
        {
            console.log(error);
        }
    },
    test: function(number, mysql, validator){
        var self = this;
        this.number = number;
        this.mysql = mysql;
        this.validator = validator;
        var result = self.searching(number, mysql, validator);
        console.log(result);
    }
};
module.exports = call;

然后在我的主文件中調用測試功能

call.hangup.test(number, connection, validator);

但我在控制台中收到以下錯誤代碼:

                var result = self.searching(leadid, mysql, validator);
                                  ^
TypeError: undefined is not a function

我該如何解決? 為什么會這樣呢?

this引用(分配給self variable )指向test function而測試功能沒有名為searching的功能。這就是為什么會出現此錯誤的原因。 您應該以這種方式調用searching功能call.hangup.searching

call = {};
call.hangup = {
    searching: function(number, mysql, validator){
        this.number = number;
        this.mysql = mysql;
        this.validator = validator;
        var query = "{sql...}";
        try
        {   
            mysql.query(query, function(err, rows, fields) {        
            if (err) throw err; 
                if(!validator.isNull(rows))
                {                                       
                    return rows.leadid;                     
                }else {
                    return false;
                }
            });
        }catch(error)
        {
            console.log(error);
        }
    },

    test: function(number, mysql, validator){

        this.number = number;
        this.mysql = mysql;
        this.validator = validator;
        var result = call.hangup.searching(number, mysql, validator);
        console.log(result);
    }
};
module.exports = call;

編輯:您也可以將self變量分配給call.hangup

test: function(number, mysql, validator){
            var self = call.hangup;
            this.number = number;
            this.mysql = mysql;
            this.validator = validator;
            var result = self.searching(number, mysql, validator);
            console.log(result);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM