You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 14:27:04