这两天在研究express里连接mysql,在创建数据库连接的时候,发现下面这个奇怪的问题。
这面这部分代码是这样的:

const mysql = require('mysql')

module.exports = {
    // database config
    config: {
        connectionLimit: 10,
        host: '',
        database: '',
        user: '',
        password: ''
    },
    sqlConnect: (sql, sqlArr, callBack) => {
        const pool = mysql.createPool(this.config)
        pool.getConnection((err, conn) => {
            if (err) return console.log('连接失败')
            conn.query(sql, sqlArr, callBack)
            conn.release()
        })
    }
}

执行的时候却报错了:

TypeError: Cannot read property 'acquireTimeout' of undefined

但是如果把config直接写到mysql.createPool里,居然就没有问题。

const mysql = require('mysql')

module.exports = {
    sqlConnect: (sql, sqlArr, callBack) => {
        const pool = mysql.createPool({
            connectionLimit: 10,
            host: '',
            database: '',
            user: '',
            password: ''
        })
        pool.getConnection((err, conn) => {
            if (err) return console.log('连接失败')
            conn.query(sql, sqlArr, callBack)
            conn.release()
        })
    }
}

真是奇怪,难道我使用config来创建的话,会自动要求有一个acquireTimeout的参数?

最后编辑:2021年03月30日 ©著作权归作者所有

发表评论