用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经典编程案例)

EasyUI CRUD应用Java改造版本

为 MongoDB 上的 CRUD 操作组织 Go 代码

MongoDB学习笔记-使用 MongoDB 进行 CRUD 操作(上)

MongoDB学习笔记-使用 MongoDB 进行 CRUD 操作(下)

springboot连接mongodb进行CRUD