1 . 构建基本的服务器与接口
const express = require('express');
const cors = require('cors');
const app = express();
// 处理跨域中间件
app.use(cors())
// 处理JSON表单格式中间件
app.use(express.json());
// 处理application/x-www-form-urlencoded表单格式的中间件
app.use(express.urlencoded({ extended: false }))
// 注册接口
app.post('/user', (req, res)=>{
const body = req.body
res.send({
status: 200,
data: 'ok',
message: '成功'
})
})
// 登录接口
app.post('/api' ,(req, res)=>{
const body = req.body
res.send({
status: '200',
data:result,
message:'成功'
})
})
// 查询接口
app.post('/update', (req, res)=>{
const body = req.body;
res.send({
status: 200,
data: body,
message: '请求成功'
})
})
// 更新接口
app.get('/select', (req, res)=>{
const body = req.query;
res.send({
status: 200,
data: body,
message: '请求成功'
})
})
// 删除接口
app.get('/delete', (req, res)=>{
const body = req.query;
res.send({
status: 200,
data: body,
message: '请求成功'
})
})
// 启动服务器
app.listen(80, () => {
console.log('express server running at http://127.0.0.1')
})
2 . 基于node进行数据库删查改写
- 如果不会创建数据库,这个......自己想办法吧,留个网上的教程传送门 -- MySQL 教程--
1 . 建立与 MySQL 数据库的连
// 导入 mysql 模块
const mysql = require('mysql');
// 建立与 MySQL 数据库的连接关系
const sql = mysql.createPool({
host: '', // 数据库的 IP 地址
user: '', // 登录数据库的账号
password: '', // 登录数据库的密码
database: '' // 指定要操作哪个数据库
connectTimeout: 5000, //连接超时
multipleStatements: false //是否允许一个query中包含多条sql语句
})
2 . 创建错误级别中间件
// 错误级别中间件
app.use((req,res,next)=>{
res.cc = function(err, status = 201){
res.send({
status,
data:"操作失败",
message: err
})
}
next()
})
3 . 对注册接口进行改造进行用户注册
// 注册接口
app.post('/user', (req, res)=>{
const body = req.body
// 查询数据库 *(所有) 表单为 ev_users 里 所有username ? 为占位符代表条件
const query = 'select * from ev_users where username=?'
// () 第一位为sql语句 第二位为占位符的条件
sql.query(query, body.username,(err, result)=>{
// err 为执行错误信息 result为数据
if (err) return res.cc('服务端错误');
// 判断影响行数 能查询到证明数据库表单里存在这个值
if(result.length > 0) return res.cc('用户名已存在')
// 插入数据
const sqlint = 'insert into ev_users set ?'
sql.query(sqlint, {username: body.username, password:body.password} ,(err,result) => {
if(err) return res.cc(err)
if(!result.affectedRows) return res.cc('注册失败')
res.send({
status: 200,
data: 'ok',
message: '注册成功'
})
})
})
})
4 . 对登录接口进行改造
app.post('/api' ,(req, res)=>{
const body = req.body
// 查询登录用户名/密码数据库是否存在,并匹配
let sqlapi = 'select * from ev_users where username = ? && password = ?'
sql.query(sqlapi, [body.username, body.password], (err,result)=>{
if (err) return res.cc('服务端错误')
if (!result.length) return res.cc('用户名/密码错误')
res.send({
status: '200',
data:'ok',
message:'登录成功'
})
})
})
5 . 对查询的接口进行改造
app.get('/select', (req, res)=>{
const body = req.query;
// 根据条件查询数据库表单的数据
const sqldel = 'select * from ev_users where id >= 0'
sql.query(sqldel, (err,result)=>{
if(err) return res.cc('服务端错误')
if(!result.length) return res.cc('查询失败')
res.send({
status: 200,
data: result,
message: '查询成功'
})
})
})
6 . 对更新接口进行改造
app.post('/update', (req, res)=>{
const body = req.body;
// 根据条件查询数据库表单的数据
let sqlsel = 'select * from ev_users where id = ?'
sql.query(sqlsel, body.id, (err,result)=>{
if(err) return res.cc('服务端错误')
if(!result.length) return res.cc('查询失败/没有该id参数')
// 更新字段
let sqlupt = 'update ev_users set ? where id = ?'
sql.query(sqlupt, [body, body.id],(err,result)=>{
if(err) return res.cc('服务端错误')
// 影响条数为0则为失败
if(!result.affectedRows) return res.cc('更新失败')
res.send({
status: 200,
data: 'ok',
message: '更新成功'
})
})
})
})
7 . 对删除接口进行改造
app.post('/delete', (req, res)=>{
const body = req.body;
// 删除数据
const sqldel = 'delete from ev_users where username = ?'
sql.query(sqldel,body.username,(err,result)=>{
if(err) return res.cc(err)
// result.affectedRows 查询受影响行数
if(!result.affectedRows) return res.cc('该数据不存在/已删除')
res.send({
status: 200,
data: 'ok',
message: '删除成功'
})
})
})
3 . 最后附上完整代码
const express = require('express');
const cors = require('cors');
// 导入 mysql 模块
const mysql = require('mysql');
const app = express();
// 建立与 MySQL 数据库的连接关系
const sql = mysql.createPool({
host: '127.0.0.1', // 数据库的 IP 地址
user: 'root', // 登录数据库的账号
password: 'root', // 登录数据库的密码
database: 'my_users' // 指定要操作哪个数据库
})
// 处理跨域中间件
app.use(cors())
// 处理JSON表单格式中间件
app.use(express.json());
// 处理application/x-www-form-urlencoded表单格式的中间件
app.use(express.urlencoded({ extended: false }))
// 错误级别中间件
app.use((req,res,next)=>{
res.cc = function(err, status = 201){
res.send({
status,
data:"操作失败",
message: err
})
}
next()
})
// 注册接口
app.post('/user', (req, res)=>{
const body = req.body
// 查询数据库 *(所有) 表单为 ev_users 里 所有username ? 为占位符代表条件
const query = 'select * from ev_users where username=?'
// () 第一位为sql语句 第二位为占位符的条件
sql.query(query, body.username,(err, result)=>{
// err 为执行错误信息 result为数据
if (err) return res.cc(err);
// 判断影响行数 能查询到证明数据库表单里存在这个值
if(result.length > 0) return res.cc('用户名已存在')
// 插入数据
const sqlint = 'insert into ev_users set ?'
sql.query(sqlint, {username: body.username, password:body.password} ,(err,result) => {
if(err) return res.cc(err)
if(!result.affectedRows) return res.cc('注册失败')
res.send({
status: 200,
data: 'ok',
message: '注册成功'
})
})
})
})
// 登录接口
app.post('/api' ,(req, res)=>{
const body = req.body
// 查询登录用户名/密码数据库是否存在,并匹配
let sqlapi = 'select * from ev_users where username = ? && password = ?'
sql.query(sqlapi, [body.username, body.password], (err,result)=>{
if (err) return res.cc('服务端错误')
if (!result.length) return res.cc('用户名/密码错误')
res.send({
status: '200',
data:'ok',
message:'登录成功'
})
})
})
// 查询接口
app.get('/select', (req, res)=>{
const body = req.query;
// 根据条件查询数据库表单的数据
const sqldel = 'select * from ev_users where id >= 0'
sql.query(sqldel, (err,result)=>{
if(err) return res.cc('服务端错误')
if(!result.length) return res.cc('查询失败')
res.send({
status: 200,
data: result,
message: '查询成功'
})
})
})
// 更新接口
app.post('/update', (req, res)=>{
const body = req.body;
// 根据条件查询数据库表单的数据
let sqlsel = 'select * from ev_users where id = ?'
sql.query(sqlsel, body.id, (err,result)=>{
if(err) return res.cc('服务端错误')
if(!result.length) return res.cc('查询失败/没有该id参数')
// 更新字段
let sqlupt = 'update ev_users set ? where id = ?'
sql.query(sqlupt, [body, body.id],(err,result)=>{
if(err) return res.cc('服务端错误')
// 影响条数为0则为失败
if(!result.affectedRows) return res.cc('更新失败')
res.send({
status: 200,
data: 'ok',
message: '更新成功'
})
})
})
})
// 删除接口
app.post('/delete', (req, res)=>{
const body = req.body;
// 删除数据
const sqldel = 'delete from ev_users where username = ?'
sql.query(sqldel,body.username,(err,result)=>{
if(err) return res.cc(err)
// result.affectedRows 查询受影响行数
if(!result.affectedRows) return res.cc('该数据不存在/已删除')
res.send({
status: 200,
data: 'ok',
message: '删除成功'
})
})
})
// 启动服务器
app.listen(80, () => {
console.log('express server running at http://127.0.0.1')
})
网友评论