实例中不存在ES6类方法

问题描述 投票:2回答:1

我正在更新我的旧node.js项目以包含ES6功能,以便最终迁移到typescript,但我不能让这个类工作。我在一个单独的文件中定义了一个类:

class Database {

constructor(connectionPool) {
    this._connectionPool = connectionPool;
}

_getConnection () {
    console.log("getting connection");
    return new Promise((resolve, reject) => {
        this._connectionPool.getConnection((err, connection) => {
            if (err) {
                reject(err);
                console.log("connection rejected");
            } else {
                console.log("connection resolved");
                resolve(connection);
            }
        });
    });
}
}
module.exports = Database;

然后我将此类导入另一个文件并尝试创建一个Database实例:

const mysql = require('mysql');
const Database = require('./database');

module.exports = databaseInitializer;

function databaseInitializer(config) {

    const pool = mysql.createPool(config);
    const db = new Database(pool);
    console.log(Database.toString());
    console.log(db.__proto__);
    return db;
}

最后,我使用上面的函数来获取数据库实例:

const database = require('./models/databaseInitializer')(mysqlConfig);
console.log(database);

现在,我的数据库实例有一个_connectionPool属性,但没有原型,更重要的是,没有_getConnection属性。我错过了什么?

谢谢和最好的问候

javascript node.js ecmascript-6 es6-class
1个回答
0
投票

_getConnection属性属于database的原型,因此该属性是database的非可枚举属性。

您可以通过执行此操作来访问此属性

console.log(database._getConnection) //should show the function
© www.soinside.com 2019 - 2024. All rights reserved.