之前基于express写的案例是文件格式,现在连接MongoDB 数据库 对原案例进行修改。
主要就是student.js 修改如下:
ar mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/itcast', { useMongoClient: true })
var Schema = mongoose.Schema
var studentSchema = new Schema({
name: {
type: String,
required: true
},
gender: {
type: Number,
enum: [0, 1],
default: 0
},
age: {
type: Number
},
hobbies: {
type: String
}
})
// 直接导出模型构造函数
module.exports = mongoose.model('Student', studentSchema)
然后在router.js 文件中修改调用 ,主要有一点是修改id 是字符串要换成数字,req.query.id.replace(/"/g, '')
主要修改调用如下:
router.post('/students/new', function (req, res) {
//填表单提交数据 1.获取表单数据 ,
//2,处理(将数据保存到db.json 文件中用以持久化) 3,发送响应
//先读取出来,转对象,然后往对象push数据,然后对象转为字符串,然后再把字符串写入文件
///
// 修改在这
new Student(req.body).save( function (err) {
if (err) {
return res.status(500).send('Server error.')
}
res.redirect('/students')
})
})
/*
* 渲染添加学生页面
*/
router.get('/students/edit',function (req,res) {
// 1. 在客户端的列表页中处理链接问题(需要有 id 参数)
// 2. 获取要编辑的学生 id
//
// 3. 渲染编辑页面
// 根据 id 把学生信息查出来
// 使用模板引擎渲染页面
// replace
// 字符串模式
// 简单,但是不支持全局和忽略大小写问题
// 正则表达式模式
// 强大,支持全局和忽略大小写
Student.findById(req.query.id.replace(/"/g, ''), function (err, student) {
if (err) {
return res.status(500).send('Server error.')
}
res.render('edit.html', {
student: student
})
})
})
//处理编辑学生
router.post('/students/edit',function (req,res) {
// 1. 获取表单数据
// req.body
// 2. 更新
// Student.updateById()
// 3. 发送响应
var id=req.body.id.replace(/"/g, '')
Student.findByIdAndUpdate(id,req.body,function (err) {
if (err) {
return res.status(500).send('Server error.')
}
res.redirect('/students')
})
})
/*
* 处理删除学生
*/
router.get('/students/delete', function (req, res) {
// 1. 获取要删除的 id
// 2. 根据 id 执行删除操作
// 3. 根据操作结果发送响应数据
var id = req.query.id.replace(/"/g, '')
Student.findByIdAndRemove(id,function (err) {
if (err) {
return res.status(500).send('Server error.')
}
res.redirect('/students')
})
})
// 3. 把 router 导出
module.exports = router