javascript - NodeJs 未定义不是一个函数

标签 javascript node.js

我正在使用 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引用(您分配给自变量)指向测试函数,并且测试函数没有名为的函数>搜索。这就是您收到此错误的原因。您应该以这种方式调用 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);
        }

关于javascript - NodeJs 未定义不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32881177/

相关文章:

javascript - 如何在 JavaScript 中的数组中添加多个对象?

javascript - 抑制 Karma 中的堆栈跟踪 (AngularJS)

javascript - jQuery Dialog - 修改按钮数组

javascript - 如何使用 JQuery 从表中选择最后一个不为空的单元格

javascript - 如何在 Kattis 问题解决中分割线?

javascript - 获取与请求

javascript - JavaScript 中的拖放实现 - 通过嵌套 DIV 实现的树最容易使用的组件是什么?

windows - npm install 在 Windows 上非常脆弱

javascript - 如果属性未定义则跳到 else

node.js - Node /更新/API/序列化 : UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'email' of null