node.js 利用ejs模板引擎完成增删改查

本文介绍了如何在node.js环境中利用ejs模板引擎进行增删改查操作。删除流程包括点击删除链接,发送请求到特定路由,路由获取并删除对应ID的学生,更新数据文件,最后重定向回学生列表页面。修改流程则涉及点击修改链接跳转到表单页面,用户填写信息后提交到另一路由进行信息更新。
摘要由CSDN通过智能技术生成

逻辑思想在最下面

index.js 

const express = require("express")
const path = require("path")
const app = express()
const fs = require("fs/promises")
//配置请求体解析
app.use(express.urlencoded({ extendeds: true }))
//设置数组
let studentsarr = require("./data/students.json")


//设置路由
app.get("/student", (req, res) => {
    res.render("student", { stus: studentsarr })
})
//将ejs设置为默认的模板引擎
app.set("view engine", "ejs")
//配置模板路径,无论控制台还是f5均可
app.set("views", path.resolve(__dirname, "views"))

//配置添加学生的路由
app.post("/addstudent", (req, res) => {
    //生成一个id。.at(-1)是数组最后一个
    const id = studentsarr.at(-1) ? studentsarr.at(-1).id + 1 : 1
    //获取用户输入的信息
    const newuser = {
        id,
        name: req.body.name,
        age: req.body.age,
        gender: req.body.gender,
        address: req.body.address,
    }
    studentsarr.push(newuser)

    //将数据写入到json文件中
    fs.writeFile(
        path.resolve(__dirname, "./data/students.json"),
        JSON.stringify(studentsarr)//
    ).then(() => {

        // 4. 返回响应
        // res.send("添加成功!")
        // 直接在添加路由中渲染ejs,会面临表单重复提交的问题
        res.redirect("/student")
    }).catch(() => {
        res.send("输入错误")
    })
    //console.log(newuser);
})



//配置删除学生的路由
app.get("/delete", (req, res) => {
    //获取学生学号
    const id = req.query.id
    console.log(id);
    studentsarr = studentsarr.filter((stu) => stu.id != id)//filter它用于把Array的某些元素过滤掉,然后返回剩下的元素。


    //wiritefile将数据写入到json文件中
    fs.writeFile(
        path.resolve(__dirname, "./data/students.jsaon"),
        JSON.stringify(studentsarr)//转化为字符串
    ).then(() => {

        // 4. 返回响应
        // res.send("添加成功!")
        // 直接在添
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值