用mongoDB数据库对CRUD案例进行改造
Posted So istes immer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用mongoDB数据库对CRUD案例进行改造相关的知识,希望对你有一定的参考价值。
安装mongoose: npm i mongoose
在终端开启mongoDB服务:mongod
app.js不变
student.js
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/test')
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
const express = require('express')
var Student = require('./student')
// 1. 创建一个路由容器
const router = express.Router()
// 2. 把路由都挂载到router路由容器中
router.get('/students', function (req, res) {
Student.find(function (err, students) {
if (err) {
return res.status(500).send("Server Error.")
}
res.render('index.html', {
students: students
})
})
})
router.get('/students/new', function (req, res) {
res.render('new.html')
})
router.post('/students', function (req, res) {
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) {
const id = req.query.id.replace(/"/g, '')
Student.findById(id, 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.获取表单数据 2.更新 3.发送响应
const 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) {
const id = req.query.id.replace(/"/g, '')
Student.findByIdAndRemove(id, function(err) {
if(err) {
return res.status(500).send('Server error.')
}
res.redirect('/students')
})
})
//3. 把路由导出
module.exports = router
views/index.html
<!doctype html>
<html lang="zh-CN">
<head>
...// 原代码不变
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h2 class="sub-header">学生信息表</h2>
<a class="btn btn-success" href="/students/new">添加学生</a>
<div class="table-responsive">
<table class="table table-striped">
...// 原代码不变
<tbody>
{{ each students }}
<tr>
<td>{{ $index + 1 }}</td>
<td>{{ $value.name }}</td>
<td>{{ $value.gender }}</td>
<td>{{ $value.age }}</td>
<td>{{ $value.hobbies }}</td>
<td>
<a href="/students/edit?id={{ $value._id }}">编辑</a>
<a href="/students/delete?id={{ $value._id }}">删除</a>
</td>
</tr>
{{ /each}}
</tbody>
</table>
</div>
</div>
</div>
</div>
</body>
</html>
views/edit.html
<!doctype html>
<html lang="zh-CN">
<head>
... //原代码不变
</head>
<body>
<div class="container-fluid">
<h3 class="sub-header">编辑学生</h3>
<form action="/students/edit" method="post">
<!-- 这里的id需要上传到服务器,但是又不希望被看见 -->
<input type="hidden" name="id" value="{{ student._id }}">
... //原代码不变
</form>
</div>
<script>
... //原代码不变
</script>
</body>
</html>
views/new.html不变
以上是关于用mongoDB数据库对CRUD案例进行改造的主要内容,如果未能解决你的问题,请参考以下文章
python3操作MongoDB的crud以及聚合案例,代码可直接运行(python经典编程案例)
MongoDB学习笔记-使用 MongoDB 进行 CRUD 操作(上)