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

猜你喜欢

转载自www.cnblogs.com/zyulike/p/10057096.html