Javascript 从方法(NODEJS)中的回调获取主类

Javascript 从方法(NODEJS)中的回调获取主类,javascript,node.js,class,methods,callback,Javascript,Node.js,Class,Methods,Callback,我需要从数据库中填写个人资料。 但无法获取主类的属性。请告诉我可以解决什么问题 类别: class Operator { constructor(id) { this.operator_id = id; this.profiles = {}; } getProfiles(){ return this.profiles; } loadProfiles(){ console.log('load

我需要从数据库中填写个人资料。 但无法获取主类的属性。请告诉我可以解决什么问题

类别:

class Operator {
    constructor(id) {
        this.operator_id = id;
        this.profiles = {};
    }

    getProfiles(){
        return this.profiles;
    }

    loadProfiles(){
        console.log('loading profiles');
        console.log(this.profiles);

        db.queryAll(`
        SELECT
        profiles.id,
        profiles.domain_id,
        profiles.name
        FROM
        operators_to_profiles
        LEFT JOIN profiles ON profiles.id = operators_to_profiles.profile_id
        WHERE operator_id = ${this.operator_id}
        `, function (data){
            console.log(Operator.getProfiles());
        });
    }
}

module.exports = {
    create : function (operator_id) {
        return new Operator(operator_id);
    }
};
let operator = Operators.create(operatorId);
operator.loadProfiles();
用法:

class Operator {
    constructor(id) {
        this.operator_id = id;
        this.profiles = {};
    }

    getProfiles(){
        return this.profiles;
    }

    loadProfiles(){
        console.log('loading profiles');
        console.log(this.profiles);

        db.queryAll(`
        SELECT
        profiles.id,
        profiles.domain_id,
        profiles.name
        FROM
        operators_to_profiles
        LEFT JOIN profiles ON profiles.id = operators_to_profiles.profile_id
        WHERE operator_id = ${this.operator_id}
        `, function (data){
            console.log(Operator.getProfiles());
        });
    }
}

module.exports = {
    create : function (operator_id) {
        return new Operator(operator_id);
    }
};
let operator = Operators.create(operatorId);
operator.loadProfiles();
输出:

class Operator {
    constructor(id) {
        this.operator_id = id;
        this.profiles = {};
    }

    getProfiles(){
        return this.profiles;
    }

    loadProfiles(){
        console.log('loading profiles');
        console.log(this.profiles);

        db.queryAll(`
        SELECT
        profiles.id,
        profiles.domain_id,
        profiles.name
        FROM
        operators_to_profiles
        LEFT JOIN profiles ON profiles.id = operators_to_profiles.profile_id
        WHERE operator_id = ${this.operator_id}
        `, function (data){
            console.log(Operator.getProfiles());
        });
    }
}

module.exports = {
    create : function (operator_id) {
        return new Operator(operator_id);
    }
};
let operator = Operators.create(operatorId);
operator.loadProfiles();
加载剖面

{}

TypeError:Operator.getProfiles不是函数

已解决:

class Operator {
    constructor(id) {
        this.operator_id = id;
        this.profiles = {};
    }

    getProfiles(){
        return this.profiles;
    }

    loadProfiles(){
        console.log('loading profiles');
        console.log(this.profiles);

        db.queryAll(`
        SELECT
        profiles.id,
        profiles.domain_id,
        profiles.name
        FROM
        operators_to_profiles
        LEFT JOIN profiles ON profiles.id = operators_to_profiles.profile_id
        WHERE operator_id = ${this.operator_id}
        `, function (data){
            console.log(Operator.getProfiles());
        });
    }
}

module.exports = {
    create : function (operator_id) {
        return new Operator(operator_id);
    }
};
let operator = Operators.create(operatorId);
operator.loadProfiles();

您应该将
操作符.getProfiles()
设置为
this.getProfiles()
(因为`getProfiles()不是静态的),并更改将其包装为箭头函数的函数。通过在下面添加答案(而不是编辑自己的问题),您可以自由回答自己的问题