在NodeJS中操作数据库的步骤
安装操作 MySQL
数据库的第三方模块(mysql
)
通过 mysql
模块连接到 MySQL
数据库
1 2 3 4 5 6 7 8 9 10
| var mysql = require('mysql')
var db = mysql.createPool({ host: '127.0.0.1', user: 'root', password: 'toor', database: 'my_db_01' })
|
注意:如果出现error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by serv的报错
原因:
- 导致这个错误的原因是,目前,最新的mysql模块并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默认的加密方式。
可以在MySQL Workbench 里面执行下面代码解决
1
| ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'
|
转载自https://blog.csdn.net/sufubo/article/details/104108095
通过 mysql
模块执行 SQL
语句
1 2 3 4 5 6 7 8
| db.query('select * from users', (err, results) => {
if (err) return console.log(err.message) console.log(results) })
|
使用 insert into 语句插入数据
1 2 3 4 5 6 7 8 9 10 11 12 13
| const user = { username: 'tom', password: '123456' }
const sqlstr = 'insert into users (username, password) values (?, ?)'
db.query(sqlstr, [user.username, user.password] ,(err, results) => { if (err) return console.log(err.message) if (results.affectedRows === 1) { console.log('插入数据成功') } })
|
插入数据的便捷方式
1 2 3 4 5 6 7 8 9 10 11 12 13
| const user = { username: 'jerry', password: '123456' }
const sqlstr = 'insert into users set ?'
db.query(sqlstr, user ,(err, results) => { if (err) return console.log(err.message)
if (results.affectedRows === 1) { console.log('插入数据成功') } })
|
使用 update 语句更新数据
1 2 3 4 5 6 7 8 9 10 11 12 13
| const user = { id: 7, username: 'spike', password: '123000' }
const sqlstr = 'update users set username=?, password=? where id=?'
db.query(sqlstr, [user.username, user.password, user.id] ,(err, results) => { if (err) return console.log(err.message)
if (results.affectedRows === 1) { console.log('更新数据成功') } })
|
更新数据的便捷方式
1 2 3 4 5 6 7 8 9 10 11 12 13
| const user = { id: 7, username: 'spike', password: '123000' } const sqlstr = 'update users set ? where id=?' db.query(sqlstr, [user, user.id] ,(err, results) => { if (err) return console.log(err.message) if (results.affectedRows === 1) { console.log('更新数据成功') } })
|
使用 delete 语句删除数据
- 注意:如果 sql 语句中有多个占位符,则必须使用数据为每个占位符指定具体的值,如果 sql 语句中只有一个占位符,则可以省略
1 2 3 4 5 6 7 8 9 10 11 12 13
| const sqlstr = 'delete from users where id=?'
db.query(sqlstr, 7 ,(err, results) => { if (err) return console.log(err.message)
if (results.affectedRows === 1) { console.log('删除数据成功') } })
|
标记删除
- 使用
DELETE
语句,会把真正的把数据从表中删除掉
- 为了保险起见,推荐使用标记删除的形式,来模拟删除的动作
- 标记删除,就是在表中设置类似于 status 这样的状态字段,来标记当前这条数据是否被删除
- 当用户执行了删除的动作时,我们并没有执行
DELETE
语句把数据删除掉,而是执行了 UPDATE
语句,将这条数据对应的 status
字段标记为删除即可
1 2 3 4 5 6 7 8 9 10 11
| const sqlstr = 'update users set status=1 where id=?' db.query(sqlstr, 1 ,(err, results) => { if (err) return console.log(err.message) if (results.affectedRows === 1) { console.log('删除数据成功') } })
|