如何使用 mysql 在 nodejs 中添加参数

How to add parameter in nodejs with mysql

我正在用 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,你能帮帮我吗?非常感谢。

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

你也有一些例子可以学习如何使用。

希望对您有所帮助。

这里有两件事:

  • 在您的 query 函数中,我会将 connection.release() 放在 reject/resolve 之上。否则它可能不会被调用。
  • 在您的特定 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])
}