zoukankan      html  css  js  c++  java
  • node留言板

    这是一个nodejs + mongodb 的小项目,对数据库的增删改查

    1. 引入项目依赖

        "art-template": "^4.13.2",
        "body-parser": "^1.18.3",
        "express": "^4.16.4",
        "express-art-template": "^1.0.1",
        "mongoose": "^5.3.14"

    2. 项目路径 --- app.js

    var express = require('express')
    var bodyParser = require('body-parser')
    var router = require('./router')
    
    var app = express()
    
    app.use('/public/', express.static('./public/'))
    app.engine('html', require('express-art-template'));
    app.use(bodyParser.json()); // for parsing application/json
    app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
    
    app.use(router)
    
    app.listen(3000, function(){
        console.log('running...')
    })

    3. 数据库连接,创建模型  --- db.js

    var mongoose = require('mongoose');
    var user = mongoose.Schema;
    
    // 连接 MongDB 数据库
    mongoose.connect('mongodb://localhost/demo',{ useMongoClient: true })
    
    var userSchema = new user({
      name: {
          type: String,
          required: true
      },
      message: {
          type: String,
          required: true
      },
      time: {
          type: String
      }
    })
    
    // 将稳定结构发布为模型
    // mongoose.mondel 方法就是用来将一个架构发布为 model
    
    module.exports = mongoose.model('Students', userSchema)

    4. 项目路由 --- router.js

    var express = require('express')
    
    var student = require('./db')
    
    var router = express.Router()
    
    // 首页
    router.get('/', function (req, res) {
    
        student.find(function (err, ret){
            if (err) {
                return res.status(500).send('Server error.')
            } else {
                res.render('index.html', {
                    dataList: ret
                });
            }
        })
    })
    
    // 添加留言页面
    router.get('/add', function (req, res) {
        res.render('addpage.html')
    })
    
    // 添加留言
    router.post('/addMsg', function (req, res) {
        var message = new student({
            name: req.body.name,
            message: req.body.message,
            time: '2018年12月2日17:00:38'
        })
    
        message.save(function (err, ret) {
            if (err) {
                return res.status(500).send('Server error.')
            } 
            res.redirect('/')
        })
    })
    
    // 更新留言界面
    router.get('/update', function (req, res) {
        student.findById(req.query.id, function (err, ret) {
            if(err){
                return res.status(500).send('Server error.')
            }
            res.render('update.html', {
                data: ret
            });
        })
    })
    
    // 更新留言
    router.post('/updateMsg', function (req, res) {
        student.findByIdAndUpdate(req.body.id, {
            name: req.body.name,
            message: req.body.message
        }, function(err, ret) {
            if (err) {
                return res.status(500).send('Server error.')
            }
            res.redirect('/')
        })
    })
    
    // 删除留言
    router.get('/delete', function (req, res) {
        student.findByIdAndDelete(req.query.id, function (err, ret) {
            if (err) {
                return res.status(500).send('Server error.')
            }
            res.redirect('/')
        })
    })
    
    module.exports = router

    项目地址 链接:https://pan.baidu.com/s/14f6ij5hpgQXSS3y5t9wJ5A  密码:jyj1

  • 相关阅读:
    Python运算符及逻辑运算
    Python编码、流程控制、格式化输出
    Docker私有仓库Harbor部署与使用
    react
    理事会
    关于elementui form表单过长,看不到未填项
    js
    vue 父子传值
    养生
    html知识点
  • 原文地址:https://www.cnblogs.com/zyulike/p/10057096.html
Copyright © 2011-2022 走看看