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啓動");
})


發佈了120 篇原創文章 · 獲贊 129 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章