zoukankan      html  css  js  c++  java
  • Node.js学习笔记-----day05 (使用MongonDB重写学生信息管理案例)

    认真学习,认真记录,每天都要有进步呀!!!
    加油叭!!!


    使用MongonDB重写学生信息管理案例

    1. 显示首页

    • 先在crud-demo目录下安装mongoose
      在这里插入图片描述

    • 改写student.js

    var 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

    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
        })
      })
    })
    
    • node执行app.js
      页面显示:
      在这里插入图片描述

    • 数据库中存储的 id不能在页面上直接显示

     <th scope="row">{{$value.id}}</th>
    
    • 更换成:
     <th scope="row">{{$index+1}}</th>
    

    在这里插入图片描述

    2.实现添加学生

    router.js

     router.get('/students/new', function (req, res) {
       res.render('new.html')
     })
    router.post('/students/new', function (req, res) {
      new Student(req.body).save(function (err) {
        if (err) {
          return res.status(500).send('Server error.')
        }
        res.redirect('/students')
      })
    })
    

    在这里插入图片描述
    在这里插入图片描述

    3.处理渲染编辑页面

    因为数据库中存储的id_id,所以
    将:

    <td>
       <a href="/students/edit?id={{ $value.id }}">编辑</a>
       <a href="/students/delete?id={{ $value.id }}">删除</a>
    </td> 
    

    更改为:

    <td>
     <a href="/students/edit?id={{ $value._id }}">编辑</a>
      <a href="/students/delete?id={{ $value._id }}">删除</a>
    </td>
    
    router.get('/students/edit', function (req, res) {
      Student.findById(req.query.id.replace(/"/g, ''), function (err, student) {
        if (err) {
          console.log(err)
          return res.status(500).send('Server error.')
        }
        res.render('edit.html', {
          student: student
        })
      })
    })
    
    

    注意:
    replace(/"/g, '') 因为id带有引号,所以需要替换一下
    将引号替换成空, /"/g 表示全部替换

    在这里插入图片描述
    来吧展示:
    在这里插入图片描述

    4.处理编辑功能

    router.js

    router.post('/students/edit', function (req, res) {
      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')
      })
    })
    

    来吧展示:

    在这里插入图片描述

    5.实现删除功能

    router.get('/students/delete', function (req, res) {
      var id = req.query.id.replace(/"/g, '')
      Student.findByIdAndRemove(id, function (err) {
        if (err) {
          return res.status(500).send('Server error.')
        }
        res.redirect('/students')
      })
    })
    

    来吧展示:
    在这里插入图片描述

    删除Chinatsu这条数据
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    【Linux 内核网络协议栈源码剖析】数据包发送
    【Linux 内核网络协议栈源码剖析】connect 函数剖析(一)
    【Henu ACM Round#14 C】Duff and Weight Lifting
    【Henu ACM Round#14 B】Duff in Love
    【Henu ACM Round#14 A】Vitaly and Night
    【Henu ACM Round #13 E】Spy Syndrome 2
    【Henu ACM Round #13 F】Fibonacci-ish
    【Henu ACM Round #13 D】A Trivial Problem
    【Henu ACM Round #13 C】 Ebony and Ivory
    【Henu ACM Round #13 B】Spider Man
  • 原文地址:https://www.cnblogs.com/Chinatsu/p/13823181.html
Copyright © 2011-2022 走看看