NodeJS配合MySQL使用Promise时报DataBase未定义错误是什么原因?
错误1:类名大小写不匹配
JavaScript区分大小写,你定义的类名为Database(第二个单词首字母b小写),但实例化时写的是DataBase(第二个单词首字母B大写),二者拼写不一致导致找不到类定义,直接触发引用报错。你修改大小写时需要保证定义和实例化的类名完全一致。
错误2:query方法内部属性引用错误
你在构造函数中把数据库连接挂载到了this.connection属性上,但query方法中错误调用了不存在的this.database属性,就算解决类名问题,后续运行查询时也会抛出属性不存在的报错。
修正后的完整代码
const mysql = require( 'mysql' ); let config = { host : 'localhost', user : 'myuser', password : 'mypassword', database: 'mydatabase' }; class Database { constructor( config ) { this.connection = mysql.createConnection( config ); } query( sql, args ) { return new Promise( ( resolve, reject ) => { // 修正属性引用,将this.database改为this.connection this.connection.query( sql, args, ( err, rows ) => { if ( err ) return reject( err ); resolve( rows ); } ); } ); } close() { return new Promise( ( resolve, reject ) => { this.connection.end( err => { if ( err ) return reject( err ); resolve(); } ); } ); } } // 修正类名拼写,和定义的Database保持一致 let mydb = new Database(config);
内容的提问来源于stack exchange,提问作者Meggy
相关产品推荐
相关产品推荐

