Javascript 类在Nodejs中未定义
我正在使用Javascript 类在Nodejs中未定义,javascript,node.js,Javascript,Node.js,我正在使用nodejsmysql库。我想编写没有回调地狱的同步查询。我找到了一个教程,它讨论了如何开发数据库客户机 按照教程,我做了: class Database { constructor( config ) { this.pool = mysql.createPool({ connectionLimit: 10, host: keys.connection.host, user: keys.c
nodejs
mysql
库。我想编写没有回调地狱的同步查询。我找到了一个教程,它讨论了如何开发数据库客户机
按照教程,我做了:
class Database {
constructor( config ) {
this.pool = mysql.createPool({
connectionLimit: 10,
host: keys.connection.host,
user: keys.connection.user,
password: keys.connection.password,
database: keys.connection.database,
dateStrings: true
})
}
query( sql, args ) {
return new Promise( ( resolve, reject ) => {
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.query('select*fromtable')
会给我带来数据库未定义错误
我还尝试添加
const db =new Database()
db.query('select * from table')
这给了我
未处理的PromisejectionWarning:TypeError:无法读取属性
未定义的“查询”
把我的评论写进一个答案,因为它为你解决了问题
您的提示代码似乎没有正确地遵循示例,特别是,您正在分配
此.pool
,但正在尝试使用此.connection
这将导致this.connection
未定义
因此,很可能是this.connection.query
导致了错误,而不是您的类没有定义
作为将来的参考,您可以通过更多的调试来发现这一点。在调试器中单步执行代码和/或设置断点以查看错误发生的确切位置和原因,或使用console.log()
语句了解更多有关发生的情况。这种类型的基本调试将使您能够更快地解决这些类型的问题
仅供参考,如果您希望mysql能够为您提供帮助,那么有一个网站将为您提供mysql 这段代码看起来过于简单,因为您引用了很多代码没有初始化或显示的内容。例如,此连接
。那是从哪里来的?例如,keys.connection
。另外,我猜您的构造函数实际上并不是您显示的那样,因为调用new Database()
后,db
不应该是未定义的。所以,我认为这是一个不完整的例子。这里发生的事情比您在这里显示的还要多。池
配置工作正常,因为我以前使用过它。执行pool.query('select*from table')
。我只是想向客户承诺,还有一个会向你承诺mysql的。而且,您的提示代码似乎没有正确地遵循示例。特别是,您正在分配此.pool
,但试图使用此.connection
。这两种情况都不会导致db
未定义,但肯定是不正确的。您正在分配此.pool
,但尝试使用此.connection
。这就是问题所在。现在它开始工作了。非常感谢。