实例中不存在ES6类方法

时间:2018-01-01 14:42:13

标签: javascript node.js ecmascript-6 es6-class

我正在更新我的旧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;

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

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属性。 我错过了什么?

谢谢和最好的问候

1 个答案:

答案 0 :(得分:0)

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

您可以通过

访问此媒体资源
console.log(database._getConnection) //should show the function