node连接mysql以及防注入的手段
首页 > >    作者:lininn   2022年10月28日 15:39 星期五   热度:71°   百度已收录  
时间:2022-10-28 15:39   热度:71° 

安装mysql

$ yarn add mysql

建立连接池、常用sql语句

// mysql.js
const mysql = require('mysql');
// 创建连接池
const pool = mysql.createPool({
    host: 'xxx.xx.xxx.xxx', // 服务器ip
    port: 3306, // mySql运行的端口号(默认3306)
    database: 'name', // 数据库名称
    user: 'user', // 数据库用户
    password: xxxx // 数据库密码
})
const query = (sql, values) => {
    return new Promise((resolve, reject) => {
        pool.getConnection(function (err, connection) {
            if (err) {
                reject(err)
            } else {
                connection.query(sql, values, (err, rows) => {
                    if (err) {
                        reject(err)
                    } else {
                        resolve(rows)
                    }
                    connection.release()
                })
            }
        })
    })
}

/**
 * 查询数据
 * @param {*} table 表名
 * @param {*} key 查询条件的Key
 * @returns list
 */
const findDataWhere = (table, word, key = 'id') => {
    const _sql = `SELECT * FROM ??  WHERE ${key} =?`
    return query(_sql, [table, word])
}

/**
 * 插入数据
 * @param {*} table 表名
 * @param {*} values 插入的值
 * @returns list
 */
const insertData = (table, values) => {
    const _sql = `INSERT INTO ?? SET ?`
    return query(_sql, [table, values])
}

/**
 * 更新数据
 * @param {*} table 表名
 * @param {*} values 插入的值
 * @param {*} word 查询条件的值 
 * @param {*} key 查询条件的Key
 * @returns list
 */
const updateData = (table, values, word, key = 'id') => {
    const _sql = `UPDATE ?? SET ? WHERE ${key} =? `
    return query(_sql, [table, values, word])
}

/**
 * 删除数据
 * @param {*} table 表名
 * @param {*} word 查询条件的值
 * @param {*} key 查询条件的Key
 * @returns 
 */
const deleteData = (table, word, key = "id") => {
    const _sql = `DELETE FROM ?? WHERE ${key} =?`
    return query(_sql, [table, word])
}
module.exports = {
    query,
    insertData,
    updateData,
    deleteData,
    findDataWhere
}

使用方法


			

// 控制层 article.js
const mySqlFun = require("./mysql")
/**
 * 获取标签列表(id倒序)带分页
 */
const findLabelListPage = async (ctx) => {
    let { pageIndex = 1, pageSize = 10, } = ctx.query
    let resData = {
        list: [],
        pageIndex: pageIndex,
        pageSize: pageSize,
    }
    const _sql = `SELECT * FROM ?? ORDER BY id DESC LIMIT ${(pageIndex - 1) * pageSize},${pageSize} `
    // 使用上面导出的query,第一个参数就是sql,第二个参数是数组,?? 和 ? 就是占位符对应的具体表名或参数
    let res = await mySqlFun.query(_sql, ['label'])
    if (res) {
       ...
    } else {
       ...
    }
}

二维码加载中...
本文作者:lininn      文章标题: node连接mysql以及防注入的手段
本文地址:?post=566
版权声明:若无注明,本文皆为“覆手为雨”原创,转载请保留文章出处。
分享本文至:

返回顶部    首页    手机版本    后花园   会员注册   
版权所有:覆手为雨    站长: lininn