编辑-问题标题已进行编辑,以反映问题的真实性质
我正在尝试重构我的node.js应用程序代码,并更好地利用OOP原则。在重构之前,mysql驱动程序和连接(池)位于主app.js文件的顶部,位于路由逻辑等之上。现在我已经创建了下面的文件,并在主app.js文件中导入并尝试使用该类。但是,该类无法实例化。我是JavaScript类的新手,所以我可能犯了一个简单的错误。有人能看到这里的错误吗?
const mysql = require('mysql');
class Database {
constructor(maxConnections) {
this._pool = mysql.createPool({
connectionLimit: maxConnections,
host: '',
user: '',
password: '',
database: ''
});
}
get Pool() {
return this._pool;
}
// static ExecuteSQL(sql, callback) {
// this.Pool.getConnection(function (err, connection) {
// connection.query(sql, function (err, rows, fields) {
// if (err) {
// callback(err, null, null);
// } else {
// callback(null, rows, fields);
// }
// connection.release();
// });
// });
// }
static Format(sql, args) {
return mysql.format(sql, args);
}
}
module.exports = {
Database,
}数据库逻辑在重构代码之前工作,所以我认为这是一个与JavaScript类相关的错误。
发布于 2017-08-24 01:33:07
这个问题并不准确,尽管如此,以下是解决方案:
问题是我试图调用db.Format(),而db是数据库的一个实例。使用JavaScript似乎不能从实例中调用静态成员。修复方法是调用Database.Format(),其中数据库是‘静态’类定义
https://stackoverflow.com/questions/45844813
复制相似问题