如何使用mysql

时间:2018-05-15 09:36:13

标签: mysql node.js koa2

我正在用koa2学习nodejs,现在我想在mysql数据库中查询read & write & delete & update个信息,我创建了一个名为dbconfig.js的文件来配置数据库信息,另一个名为mysql.js的文件正如书中所说的那样

    const mysql = require('mysql')
    const config = require('./dbconfig')
    var pool  = mysql.createPool({
        host     : config.database.HOST,
        user     : config.database.USERNAME,
        password : config.database.PASSWORD,
        database : config.database.DATABASE,
        port      : config.database.PORT
    });
    let query = function( sql, values ) {
        return new Promise(( resolve, reject ) => {
            pool.getConnection(function(err, connection) {
                if (err) {
                    resolve( err )
                } else {
                    connection.query(sql, values, ( err, rows) => {
                        if ( err ) {
                            reject( err )
                        } else {
                            resolve( rows )
                        }
                        connection.release()
                    })
                }
            })
        })
    }
    let findAUser = function () {
        let _sql = `
            SELECT * FROM user where id = 
        `
        return query(_sql)
    }

    let deleteAUser = function () {
        let _sql = `
            DELETE FROM user where id = 
        `
        return query(_sql)
    }

    let updateAUser = function () {
        let _sql = `
            UPDATE user set name =  where id = 
        `
        return query(_sql)
    }

    let addAUser = function () {
        let _sql = `
            insert into user () value ()
        `
        return query(_sql)
    }

    module.exports={
        findAUser,
        deleteAUser,
        updateAUser,
        addAUser
    }

app.js中,我称之为const userModel = require('./mysql');userModel.findAUser()

但我不知道写findAUserdeleteAUserupdateAUseraddAUser,你能帮助我吗?非常感谢。

2 个答案:

答案 0 :(得分:0)

也许你应该看看mysql-json模块,它真正简化了插入,删除,更新等基本请求......

您还有一些例子可以学习如何使用。

希望它有所帮助。

答案 1 :(得分:0)

这里有两件事:

  • query函数中,我会将connection.release()置于拒绝/解析之上。否则它可能不会被调用。
  • 在特定的SQL函数中,您需要将参数作为参数数组提供。请参阅findAUser函数的示例:

所以看起来像这样:

let query = function( sql, values ) {
    return new Promise(( resolve, reject ) => {
        pool.getConnection(function(err, connection) {
            if (err) {
                resolve( err )
            } else {
                connection.query(sql, values, ( err, rows) => {
                    connection.release()
                    if ( err ) {
                        reject( err )
                    } else {
                        resolve( rows )
                    }
                })
            }
        })
    })
}
let findAUser = function (id) {
    let _sql = `
        SELECT * FROM user where id = ?
    `
    return query(_sql, [id])
}