node + express + axios 增删改查


// 引入express 包
const express = require("express");
// fs 文件操作内置模块
const fs = require("fs");
// path 文件目录路径内置模块
const path = require("path");
// 数据
const db = require("./src/mock/data.json");
// 实例化 express 给 app 实例对象
const app = express();

// 开放静态资源文件src
app.use(express.static("src"));

// post 数据转换
app.use(express.json());
app.use(express.urlencoded());

// 配置默认页
app.get("/", (req, res) => {
    // sendFile 接收 绝对路径。 __dirname :文件所在磁盘的路径(指向文件的绝对路径)
    res.sendFile(path.join(__dirname, "/src/index.html"));
})

// 接口位置 

// 登录
app.get("/login", (req, res) => {
    let off = db.some(item => {
        return item.name == req.query.name && item.pwd == req.query.pwd;
    })
    if (off) {
        res.send({ code: 0, msg: "登录成功" })
    } else {
        res.send({ code: 1, msg: "登录失败" })
    }
})

// 添加数据 (增)
app.post("/add", (req, res) => {
    // 根据前端传过来的下标删除对应的下标数据
    db.push(req.body);
    fs.writeFileSync("./src/mock/data.json",JSON.stringify(db));
    res.send({code:0,msg:"添加成功!"});
})

// 删除数据 (删)
app.get("/del", (req, res) => {
    // 根据前端传过来的下标删除对应的下标数据
    db.splice(req.query.uid, 1);
    fs.writeFileSync("./src/mock/data.json",JSON.stringify(db));
    res.send({code:0,msg:"删除成功!"});
})

// 修改数据 (改)
app.post("/updata", (req, res) => {
    // 根据前端传过来的下标删除对应的下标数据
    db.splice(req.body.uid,1,req.body);
    fs.writeFileSync("./src/mock/data.json",JSON.stringify(db));
    res.send({code:0,msg:"修改成功!"});
})

// 查询所有 (查)
app.get("/list", (req, res) => {
    // 把数据直接返回给前端
    res.send(db);
})

// 查询单个数据(查询详情)
app.get("/listOne", (req, res) => {
    // 根据前端传过来的下标查询当前的数据
    let data = db[req.query.uid];
    res.send(data);
})

// 模糊查询
app.post("/search", (req, res) => {
    // 根据前端传过来的下标删除对应的下标数据
    let data = db.filter(item=>{
        return item.name.includes(req.body.name); 
    })
    res.send(data);
})
// 分页
// 条数
let pagSize = 5;

// 总页数
let page = Math.ceil(db.length / pagSize);

// 页码 1 2 3 4 5 ...
let arr = [];

for (let index = 1; index <= page; index++) {
    arr.push(index); //1 2 3 4 5 ...
}

// 默认渲染第一页5条
app.get("/listPage", (req, res) => {
    // 第一次渲染的条数
    let start = db.slice(0,pagSize);
    // 给前端返回页码和默认条数
    res.send({arr,start});
})

// 分页
app.get("/nextPage", (req, res) => {
    // 当前页码 =(当前页码 - 1)* 条数
    let s = (req.query.id - 1) * pagSize;
    //  slice 截取当前页码对应的数据
    let data = db.slice(s,s + pagSize);
    // 返给前端
    res.send(data);
})

// 设置启动端口号
app.listen(8083, () => {
    console.log("8083启动");
})


发布了121 篇原创文章 · 获赞 151 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/feifanzhuli/article/details/103572260