在Node.js中未定义类

时间:2019-07-11 23:06:02

标签: javascript node.js

我正在使用nodejs mysql库。我想编写没有回调地狱的同步查询。我找到了this教程,该教程讨论了使数据库客户端混杂的问题。

按照我做的教程操作:

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 * from table')操作给我数据库未定义错误。

我也尝试添加

const db =new Database()

db.query('select * from table')

这给了我

  

UnhandledPromiseRejectionWarning:TypeError:无法读取属性   未定义的“查询”

1 个答案:

答案 0 :(得分:0)

将我的评论放入答案中,因为它可以为您解决问题。

在示例here.后面,您的提示代码似乎不正确,特别是,您正在分配this.pool,但是尝试使用this.connection

这将导致this.connectionundefined,这将导致代码尝试使用this.connection.query时出现“无法读取未定义的属性'查询'”的异常。

因此,很可能this.connection.query导致了错误,而不是未定义您的类。

为便于将来参考,您可能需要进行一些调试才能发现这一点。逐步调试器中的代码和/或设置断点以确切查看错误发生的位置以及原因,或者使用console.log()语句来了解有关发生的情况的更多信息。这种基本的调试功能使您可以更快地解决这些类型的问题。


仅供参考,如果您需要某些可以帮助您实现目标的MySQL,那么有一个existing module可以为您提供mysql的帮助。