node篇二: 使用node连接mysql 数据库
- 昨天我们使用node && Express && koa 简单介绍了如何创建基本的服务器以及如何进行基本的请求数据处理。但作为服务端开发来说,不能连接操作数据库进行数据存储,那么这个服务端工程师就是半废品状态。所以我们今天就来说一下在Node中我们如何进行数据库的连接操作: (这里我们操作的是关系型数据库 mysql)
注: 在开始之前大家需要在自己的电脑上安装配置好mysql数据库,并且建好一个相应的数据库以及至少一张用于操作的数据表。关于这些的具体的操作就不在这里阐述,毕竟我们今天说的是如何使用node去连接操作它
这里我们再插入介绍一点基本的sql 操作语句: (基本的增, 删, 改,查 操作)
- 查询操作:
-- 在数据库的 users 表中查询所有的数据信息
select * from users
-- 对 users 表中的具体的某些列进行查询: 这里查询username, nickname 列为例
select username, nickname from users
-- 使用 where 进行条件查询: 这里我们以查询数据库中 username="zhangsan" 的数据
select * from users where username="zhangsan"
-- 模糊查询: 在查询条件前后加上%, 并且使用 like 关键字: 这里以查询users 表中username 中包含有 "zhangsan" 这个字符串的数据为例
select * from users where username like "%zhang%"
-- 对查询的数据进行一个排序: 使用order by 对指定的项根据要求排序: 这里表示根据id值倒叙排序
select * from users where username like "%zhang%" order by id desc
- 插入数据:
-- 使用insert 进行数据的插入: 这里往users 表中插入一条数据, 前面括号中的表示数据表中的数据项, values后面的表示的是具体的插入的数据信息
insert into users (username, `password`, nickname) values ('lisi', '123', 'haha');
- 更新一条数据:
-- 使用update 进行数据的更新: 这里表示将id=2的一条数据的username 更新成 "lisi"
update users set username="lisi" where id=2
- 删除一条数据
-- 使用delete 进行数据的删除: 这里的意思表示删除数据表users中id=1的数据
delete from users where id=1
关与sql 语句这里只做些简单的介绍使用。
node 连接mysql:
- 首先我们需要在项目中安装mysql模块: npm install mysql --save
- 引入mysql模块并创建连接:
const mysql = require('mysql')
/**
* 创建连接对象: 使用mysql 下的createConnection()方法创建一个数据库连接实例
* 其中的实例参数为数据库连接的一些信息
* */
const con = mysql.createConnection({
host: "localhost", // 连接的域
user: "root", //数据库的用户名
password: "13544425754", // 数据库密码
port: '3306', // 数据库端口
database: 'myhome' // 数据库的名称
})
// 开始连接: 使用实例.connect() 方法开始连接数据库
con.connect()
// 执行sql语句: 使用实例的 query() 方法在操作数据库做一些操作
// query参数1: 需要执行的sql语句
// query参数2: 执行后的回调函数,接收两个参数: 错误信息, sql语句的执行行结果
const sql = `select * from message`
con.query(sql, (err, result) => {
if(err){
throw err
}
console.log(result)
})
// 关闭数据库连接: 使用实例的 end() 方法
con.end()
以上我们便是用 mysql 模块完成了node 和 mysql 数据库的连接,其中的query()函数执行sql语句的方法为异步的,所以我们这里再简单封装一个Promise来集中执行sql语句
/**
* @description 封装统一执行sql 的函数
* @param sql 执行的sql语句
* @returns <Promise>
*/
function exec(sql) {
return new Promise((resolve, reject) => {
con.query(sql, (err, result) => {
if(err){
reject(err)
return
}
resolve(result)
})
})
}
– 注该函数需要放到实例的连接对象所在的文件中,因为它有依赖于连接对象的query() 去执行sql语句,如果不在同一文件的话就需要将实例的对象一并传递给这个函数
对于mysql 的连接的一些的函数的用法我都写在了的代码的注释里,后面就没有多做介绍,其实我们还是有更方便的方式去执行数据库操作,不需要我们了解sql 语句,完全单纯的使用 js 代码完成,那就是 Sequelize , 关于这块的东西如果之后有时间我们再一起去说一下,大家也可以去查找更多的官方文档