node 学生端增删改查(数据来源json.js) :
此版本为以上链接版本的升级版(数据来源 MySQL数据库)
views文件夹中html文件不变
常规配置db.js
//导入mysql驱动
const mysql = require("mysql");
//导出方法
//参数1:sql文 字符串
//参数2:?对应得参数[] {}
//参数3:回调函数
exports.base=function(sql,params,callback){
//创建连接对象
const connection = mysql.createConnection({
host:"localhost",
database:"web84",
user:"root",
password:"123456"
});
//服务器连接数据库
connection.connect();
//才能在服务器访问数据库操作数据库表
//操作数据库
//查询操作
//参数1:执行的sql文
//参数2:sql文中所需要的参数 [xxx,xxx],{xxxx:xxxx,xxx:xxx}
//参数3,执行sql后,自动调用回调函数 function (error, results, fields){。。。。。}
connection.query(sql,params,function(error,results,fields){
if(error) throw error;
//成功获取查询的结果
callback(results);
});
//关闭连接
connection.end();
}
配置index.js
导入模块,创建路由
//导入express模块
const express = require("express");
//创建http服务对象
const app = express();
//导入path的系统模块
const path = require("path");
//导入body-Parser的第三方中间件
const bodyParser = require("body-parser");
//导入studentRouter.js模块
const studentRouter = require("./studentRouter.js");
//导入art-template模板引擎
//设置模板引擎文件后缀,在express框架中整合art-template模板引擎
app.engine("html",require("express-art-template"));
//设置模板引擎目录
app.set("views","./views/");
//设置视图引擎
app.set("view engine","html");
//解析请求参数的类型是application/x-wwww-urlencoded 默认为该类型
//body-parser专门处理请求正文(请求体))中的内容 把解析好的数据设置到请求对象中body属性中。
app.use(bodyParser.urlencoded({extended:true}));
//解析请求参数的类型是application/json
app.use(bodyParser.json());
//根据客户端的资源名称 挂载到studentRouter对象上
app.use("/student",studentRouter);
//获取项目目录
let proname=path.dirname(__dirname);
//静态资源的设置
app.use("/static",express.static("./views/"));
app.use("/js",express.static(path.join(proname,"js")));
app.use("/css",express.static(path.join(proname,"css")));
app.use("/img",express.static(path.join(proname,"img")));
//添加监听
app.listen("8080",function(){
console.log("running...");
})
studentRouter.js
//导入express模块
const express = require("express");
//创建Router对象
const router = express.Router();
//导入datas.json模块
const datas = require("./json/datas.json");
//导入模块fs
const fs = require("fs");
//导入path的系统模块
const path = require("path");
//导入db.js模块
const mysql = require("./db.js");
//查询功能 http://localhost:8080/student/query http://localhost:8080/student/
router.get(["/query","/"], function (req, resp) {
//查询sql文
//执行查询操作
let querySql = "select * from student";
let params = [];
mysql.base(querySql,params,function(results){
console.dir(results);
let obj = {};
obj.studentlist = results;
obj.num = results.length;
//resp.render(模块名称,{list:xxxx,num:xxxx}); 第二个参数必须是对象{}
//后台渲染 把最终完整的页面响应给客户端。
resp.render("studentlist.html", obj);
})
})
//新增保存功能
router.post("/add", function (req, resp) {
let succ = false;
//取得请求体中的参数
//{表单的name属性值:在页面上输入的值}
//{sno:xxx,sname:xxxx,age:xxx,sex:"男"}
var params = req.body;
//check 学号不能重复
let checksql = "select * from student where sno=?";
let param = [params.sno];
mysql.base(checksql,param,function(results){
//console.log(results);
if(results.length>0){
resp.send("该学号已经存在不能新增");
}else{
//新增数据
//let insertsql = "insert into student values(?,?,?,?)";
//param= [params.sno,params.sname,params.age,params.sex];
let insertsql = "insert into student set ?";
//mysql.base(insertsql,param,function(re){
mysql.base(insertsql,params,function(re){
console.log(re);
if(re.affectedRows==1){
//重定向
resp.redirect("http://localhost:8080/student/query");
}else{
resp.send("新增失败!");
}
});
}
})
})
//跳转到修改页面
router.get("/toUpdate", function (req, resp) {
let succ = false;
//取得get提交的请求参数 获取的是你要修改学生的学号
let params = req.query; //{sno:s001,sname:xxx}
let sno = params.sno;
//点击修改时,把你要修改的学生学号传过来,根据学号查询学生表,
// 有 把学生对象取出来渲染到模板页面上 没数据报错
let sql = "select * from student where sno=?";
mysql.base(sql,[sno],function(results){
if(results.length>0){
//把学生对象的数据渲染到修改页面上 {sno:xxx,sname:xxx...}
resp.render("updatestudent.html", results[0]);
}else{
resp.send("该学生不存在,不能修改");
}
});
})
//修改功能
router.post("/update", function (req, resp) {
let succ = false;
//获取请求参数 {sno:xxx,sname:xxxx,age:xxx,sex:"男"}
let params = req.body;
//判断你要修改的学生数据在sql中是否存在,存在的话,就可以修改了 反之报错
let sql = "select * from student where sno=?";
mysql.base(sql,[params.sno],function(results){
if(results.length>0){
//修改学生数据
sql ="update student set sname=?,age=?,sex=? where sno=?";
let param = [params.sname,params.age,params.sex,params.sno];
mysql.base(sql,param,function(re){
if(re.affectedRows==1){
//重定向
resp.redirect("http://localhost:8080/student/query");
}else{
resp.send("修改失败");
}
})
}else{
resp.send("该学生不存在,不能修改");
}
});
});
//删除功能
router.get("/delete",function(req,resp){
//取得你要删除的学号
var sno = req.query.sno;
//根据学号查询要删除的学生数据是否存在 存在 就删除,不存在就报错
let sql = "select * from student where sno=?";
mysql.base(sql,[sno],function(results){
if(results.length>0){
//删除该学生
sql = "delete from student where sno=?";
mysql.base(sql,[sno],function(re){
if(re.affectedRows==1){
//重定向
resp.redirect("http://localhost:8080/student/query");
}else{
resp.send("删除失败");
}
})
}else{
resp.send("该学生不存在,不能删除");
}
});
});
//导出
module.exports = router;