node连接mysql以及防注入的手段

安装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 {
...
}
}
使用方法
// 控制层 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 {
...
}
}
相关文章