【发布时间】:2017-10-04 13:00:14
【问题描述】:
我尝试了一些我认为很简单的东西:nodejs 8.6、MariaDB、MySQL2/promise 和类。但它不起作用:
这是一个简单的例子:
const mysql = require('mysql2/promise');
class mySQLClass {
constructor() {
this.mysqlConn = null;
}
async initialize() {
try {
this.mysqlConn = await mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'myschema'
});
console.log('intialize complete - createConnection successful: ');
} catch (err) {
console.log('initialize failed: ' + err);
}
}
async showMeSomeData() {
try {
const [rows, fields] = await this.mysqlConn.execute('select * from information_schema.tables where table_schema = \'information_schema\'');
console.log('data: ' + rows);
} catch (err) {
console.log('showMeSomeData failed: ' + err);
}
}
}
const test = new mySQLClass();
test.initialize();
test.showMeSomeData();
当我运行程序时,它失败了:
showMeSomeData 失败:TypeError:无法读取 null 的属性“执行”
初始化完成 - createConnection 成功
因此,在 showMeSomeData() 执行之前,initialize() 似乎没有完成。我认为 await 可以让它正常工作?
我错过了什么吗? 有没有更好的方法来做到这一点?
谢谢
【问题讨论】:
标签: mysql node.js class asynchronous async-await