node·请求MySQL增删查改(异步)

node·请求MySQL增删查改

node·请求MySQL

1】创建公共数据库信息文件 db.js

// 1. 导入 mysql 模块
const mysql = require('mysql')
// 2. 建立与 MySQL 数据库的连接关系
const db = mysql.createPool({
	host: '127.0.0.1', // 数据库的 IP 地址
	user: 'root', // 登录数据库的账号
	password: '123456', // 登录数据库的密码
	database: 'test', // 指定要操作哪个数据库
})

// 测试 mysql 模块能否正常工作
db.query('select 1', (err, results) => {
	// mysql 模块工作期间报错了
	if (err) return console.log(err.message)
	// 能够成功的执行 SQL 语句
	console.log(results);// [ RowDataPacket { '1': 1 } ]
})


//封装异步方法涵
 // 这里接收第二参数values的原因是可以使用mysql的占位符 '?'
// 比如 query(`select * from my_database where id = ?`, [1])
let query = function(sql, values) { //sql语句,values占位符
	// 返回一个 Promise
	return new Promise((resolve, reject) => {
		db.getConnection(function(err, connection) {
			if (err) {
				reject(err)
			} else {
				connection.query(sql, values, (err, rows) => {

					if (err) {
						reject(err)
					} else {
						resolve(rows)
					}
					// 结束会话
					connection.release()
				})
			}
		})
	})
	
	//使用方法,在接口js文件中
	// api.post('/login', async (req, res) =>{ 
	//     // 这里可以同步获取到rows
	//     let rows = await query('select * from im_user')
	//     ctx.body = {
	//         code: 0,
	//         msg: '请求成功',
	//         data: rows
	//     }
	// })
}


module.exports = { db, query }; //暴露出属性

2】创建查询或业务文件 test.js

var db = require('./db'); //引用db.js 暴露的属性

var db = require('./db'); //引用db.js 暴露的属性

// 查询 cnPL5_list 表中所有的数据
const sqlStr = 'select * from cnPL5_list'
db.query(sqlStr, (err, results) => {
	// 查询数据失败
	if (err) return console.log(err.message)
	// 查询数据成功
	// 注意:如果执行的是 select 查询语句,则执行的结果是数组
	console.log(results)
})
// 插入数据的便捷方法
var user = { id: '2022000', date: '2022-00-00' }
// 定义待执行的 SQL 语句
var sqlStr = 'insert into cnPL5_list set ?'
// 执行 SQL 语句
db.query(sqlStr, user, (err, results) => {
  if (err) return console.log(err.message)
  if (results.affectedRows === 1) {
    console.log('插入数据成功')
  }
})
// 删除 id 为 2022000 的用户
var id = '2022000';
var sqlStr = 'delete from cnPL5_list where id=?';
db.query(sqlStr, id, (err, results) => {
  if (err) return console.log(err.message)
  // 注意:执行 delete 语句之后,结果也是一个对象,也会包含 affectedRows 属性
  if (results.affectedRows === 1) {
    console.log('删除数据成功')
  }
})
// 更新数据的便捷方法
var user = { id: '2022000', date: '2022-00-11' }
// 定义 SQL 语句
var sqlStr = 'update cnPL5_list set ? where id=?'
// 执行 SQL 语句
db.query(sqlStr, [user, user.id], (err, results) => {
  if (err) return console.log(err.message)
  if (results.affectedRows === 1) {
    console.log('更新数据成功')
  }
}) 
1,079 Views
分享你的喜爱
linwute
linwute

我要像梦一样自由,像大地一样宽容;
在艰辛放逐的路上,点亮生命的光芒;
我要像梦一样自由,像天空一样坚强;
在曲折蜿蜒的路上,体验生命的意义;

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注