1.创建一个文件夹打开文件夹终端输入
npm init -y
注释:
如果文件夹的名字中包括中文
npm init //按回车.就不是npm init -y了
package name: (新建文件夹) mys //这一条是你需要输入的名字.用英文
//剩下的全部回车确定
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to C:\Users\xx\Desktop\新建文件夹\package.json:
{
"name": "mys",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this OK? (yes)
2.下包
//终端中输入
PS C:\Users\xx\Desktop> npm i mysql
3.在js文件中导入
const mysql = require('mysql')
4.导入其他配置需求
//下载.导入mysql
//npm i mysql
const mysql = require('mysql')
//导入express
const express = require('express')
//创建web
const app = express()
//解析获取的文字 配置中间件
app.use(express.urlencoded({ extended: false}))
//启动
app.listen(3030, () => {
console.log('http://127.0.0.1:3030');
})
5.创建一个db连接对象
//创建一个db链接对象
const db = mysql.createPool({
host: '127.0.0.1',//连接哪一个服务器上的mysql IP地址
user: 'root',//数据库的用户名
password: 'root',//数据库的密码
database:'web67'//操作的数据库名称
})
6.创建路由根据db连接对象测试是否获取成功
app.get('/get', (req, res) => {
//通过db连接对象测试是否连接成功 可以通过db.query来执行sql语句
//查询语句data得到的是一个数组 增删改得到的是受影响的语句
db.query('select * FROM users ', (err, data) => {
//如果连接失败 或者sql语句写错
if (err) return console.log(err.message);
if (data.length === 0) return console.log('没有数据');
res.send({
status: 0,
msg: '数据获取成功',
data
})
})
})
通过postman可以查看,在查看前需要开启服务器管理软件并且在终端启动.
因为是get请求,选择的是get方式和 params 然后send
7.添加数据
app.post('/post', (req, res) => {
//获取数据.通过req.body
const date = req.body
//获取操作指令
const sql = 'insert into users set ?'
db.query(sql, date,(err, data)=> {
if (err) return console.log(err.message);
if (data.affectedRows !== 1) return console.log('添加失败');
res.send({
status: 0,
msg: '添加成功',
})
})
})
添加使用的是post请求.postman 需要切换post 根据body打开 选择对应的方式.
因为我们前面配置了中间件解析文字,所以不会出错.如果出错.注意看自己是否配置了解析中间件
username password 要和你本地数据库里的名字一样.
8.修改数据
app.post('/updateuser', (req, res) => {
const date = req.body
const sql = 'update users set ? WHERE id = ?'
db.query(sql, [date, date.id],(err,data)=> {
if (err) return console.log(err.message);
if (data.affectedRows !== 1) return console.log('修改失败');
res.send({
status: 0,
msg: '修改成功',
})
})
})
9.删除
app.get('/shanchu/:id', (req, res) => {
const date = req.params.id
const sql = 'update users set WHERE id = ?'
db.query(sql,date,(err,data)=> {
if (err) return console.log(err.message);
if (data.affectedRows !== 1) return console.log('删除失败');
res.send({
status: 0,
msg: '删除成功',
})
})
})
注意:
删除数据会永久删除.所以测试的时候根据status 实现一个类似回收站的操作
const sql = 'update users set status = 0 WHERE id = ?'
完整代码:
//下载.导入mysql
//npm i mysql
const mysql = require('mysql')
//导入express
const express = require('express')
//创建web
const app = express()
//解析获取的文字 配置中间件
app.use(express.urlencoded({ extended: false}))
//创建一个db链接对象
const db = mysql.createPool({
host: '127.0.0.1',//连接哪一个服务器上的mysql IP地址
user: 'root',//数据库的用户名
password: 'root',//数据库的密码
database:'web67'//操作的数据库名称
})
//创建路由
app.get('/get', (req, res) => {
//通过db连接对象测试是否连接成功 可以通过db.query来执行sql语句
//查询语句data得到的是一个数组 增删改得到的是受影响的语句
db.query('select * FROM users ', (err, data) => {
//如果连接失败 或者sql语句写错
if (err) return console.log(err.message);
if (data.length === 0) return console.log('没有数据');
res.send({
status: 0,
msg: '数据获取成功',
data
})
})
})
app.post('/post', (req, res) => {
//获取数据.通过req.body
const date = req.body
//获取操作指令
const sql = 'insert into users set ?'
db.query(sql, date,(err, data)=> {
if (err) return console.log(err.message);
if (data.affectedRows !== 1) return console.log('添加失败');
res.send({
status: 0,
msg: '添加成功',
})
})
})
//根据ID更新username
//创建路由
app.post('/updateuser', (req, res) => {
const date = req.body
const sql = 'update users set ? WHERE id = ?'
db.query(sql, [date, date.id],(err,data)=> {
if (err) return console.log(err.message);
if (data.affectedRows !== 1) return console.log('修改失败');
res.send({
status: 0,
msg: '修改成功',
})
})
})
//创建删除
app.get('/shanchu/:id', (req, res) => {
const date = req.params.id
const sql = 'update users set status = 0 WHERE id = ?'
db.query(sql,date,(err,data)=> {
if (err) return console.log(err.message);
if (data.affectedRows !== 1) return console.log('删除失败');
res.send({
status: 0,
msg: '删除成功',
})
})
})
//假删除 类似
//启动
app.listen(3030, () => {
console.log('http://127.0.0.1:3030');
})