功能模块化
新建student.js文件,将要实现的功能进行模块化处理,同时封装要调用的函数API student.js,导出对象为student.(API这里就不写了,在后面会给出)
var express = require('express')
var student = require('./student')
var router = express.Router()//创建一个路由容器
1.主页显示学生信息模块
主页显示数据库中的学生信息,这里数据库文件是db.json
{"students":[{"id":1,"name":"李顺","gender":"0","age":"18","hobies":"玩饥荒,狗狗顺顺"},{"name":"郑孟浩","gender":"0","age":"36","hobies":"成为海贼王!!!","id":2},{"name":"闫智超","gender":"0","age":"99","hobies":"玩英雄联盟","id":3},{"name":"羊大斌","gender":"0","age":"77","hobies":"睡觉,吃饭打游戏","id":4}]}
//读取主页
router.get('/student',function(req,res){//将请求服务挂载到router容器中
student.findall(function(err,data){
if(err){
return res.send('文件读取失败')
}
console.log(data)
res.render('index.html',{fruits : [
'苹果',
'香蕉',
'菠萝',
'芭乐'
],
students : data})
})
})
2.添加学生信息模块
//读取添加学生页面
router.get('/student/new',function(req,res){
res.render('new.html')
})
//读取添加学生后的主页
router.post('/student/new/',function(req,res){
//调用添加学生方法,将表单提交的数据作为参数传递
student.add(req.body,function(err){
if(err){
return res.send("保存失败")
}
//如果成功则重定向到主页
res.redirect('/student')
})
})
3.编辑学生信息模块
这里以id作为唯一标识符,因为配置了body-parser包,所以当用户点击编辑时客户端路径请求的信息都保存在req.body中
这里表单提交采用的时post方式
[外链图片转存失败(img-BZTwUvIq-1564147464994)(C:\Users\14331\AppData\Roaming\Typora\typora-user-images\1564147082028.png)]
router.get('/student/edit',function(req,res){
//获取要编辑的学生id
//渲染编辑页面
//由于路径中的req.query.id为字符串所以要调用parseInt()转为数字
student.findById(parseInt(req.query.id),function(err,student){//student = ret
if(err){
return res.send("服务端错误")
}
res.render('edit.html',{
students : student
})
})
})
router.post('/student/edit/',function(req,res){
student.update(req.body,function(err){//因为是post提交的数据所以路径数据保存在req.body中
if(err){
return res.send("错误")
}
res.redirect('/student')
})
})
4.删除学生信息模块
这里也是以id作为唯一标识符删除学生
router.get('/student/delete',function(req,res){
//根据id来删除学生
// console.log(req.query.id)
student.deleteById(req.query.id,function(err){
if(err){
return res.send("错误")
}
res.redirect('/student')
})
})
5.查找学生信息模块
//读取学生查找页面
router.get('/student/lookup',function(req,res){
res.render('select.html')
})
router.post('/student/select/',function(req,res){
// console.log(req.body)
//获取表单提交名字
//与json文件中的students数组做比较
//匹配则返回该学生信息
//若没有则返回查无此人
// console.log(typeof req.body.name)
student.select(req.body.name,function(err,data){
if(err){
res.send('文件读取失败')
}
if(data != null){
console.log(data)
res.render('student.html',{students : data})
}else{
res.send('查无此人')
}
})
})