这是一个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

node留言板的更多相关文章

  1. node留言板开发————node.js

    各位需要的话可以下载去看一下. 源码下载链接:https://download.csdn.net/download/weixin_41018304/11833778

  2. 原生node实现简易留言板

    原生node实现简易留言板 学习node,实现一个简单的留言板小demo 1. 使用模块 http模块 创建服务 fs模块 操作读取文件 url模块 便于path操作并读取表单提交数据 art-tem ...

  3. 用 Express4 写一个简单的留言板

    Knowledge Dependence:阅读文本前,你需要熟悉 Node.js 编程.Express 以及相关工具和常用中间件的使用. Node.js 以其单线程异步非阻塞的特点,越来越被广大的 W ...

  4. AngularJs学习笔记(制作留言板)

    原文地址:http://www.jmingzi.cn/?post=13 初学Anjularjs两天了,一边学一边写的留言板,只有一级回复嵌套.演示地址 这里总结一下学习的过程和笔记.另外,看看这篇文章 ...

  5. dd——留言板再加验证码功能

    1.找到后台-核心-频道模型-自定义表单 2.然后点击增加新的自定义表单 diyid 这个,不管他,默认就好 自定义表单名称 这个的话,比如你要加个留言板还是投诉建议?写上去呗 数据表  这个不要碰, ...

  6. asp.net留言板项目源代码下载

    HoverTree是一个asp.net开源项目,实现了留言板功能. 前台体验网址:http://hovertree.com/guestbook/ 后台请下载源代码安装. 默认用户名:keleyi 默认 ...

  7. html的留言板制作(js)

    这次留言板运用到了最基础的localstorage的本地存储,展现的效果主要有: 1.编写留言2.留言前可以编辑自己的留言昵称.不足之处: 1.未能做出我喜欢的类似于网易的叠楼功能. 2.未能显示评论 ...

  8. 11月8日PHP练习《留言板》

    一.要求 二.示例页面 三.网页代码及网页显示 1.denglu.php  登录页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  9. [课程设计]Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案)

    Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统W ...

随机推荐

  1. springboot启动后自动退出

    有时新建的springboot启动后自动退出运行,如图所示: 此种情况大都数是因为pom文件加入了tomcat的依赖,与springboot内嵌的tomcat冲突导致,所以只需将pom文件中的tomc ...

  2. j2ee开发之Spring2.5框架学习笔记

    Spring 2.5框架学习笔记 1.是一个开源的控制反转IOC和面向切面AOP的容器框架 2.IOC控制反转 public class PersonServiceBean { private Per ...

  3. 理解JS引擎的执行机制

    首先,请牢记2点: (1) JS是单线程语言 (2) JS的Event Loop是JS的执行机制.深入了解JS的执行,就等于深入了解JS里的event loop 1.灵魂三问 : JS为什么是单线程的 ...

  4. 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  5. 【Java】用Freemarker完美导出word文档(带图片)

    Java  用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...

  6. .NET进阶篇-语言章-2-Delegate委托、Event事件

    知识只有经过整理才能形成技能 整个章节分布简介请查看第一篇 内容目录 一.概述 二.解析委托知识点 1.委托本质 2.委托的使用 3.委托意义 逻辑解耦,减少重复代码 代码封装支持扩展 匿名方法和La ...

  7. Asp.Net Core中Session使用

    web程序中,Session是一个无法避开的点. 最近新开项目,打算从开始搭建一个基础的架子,后台用户登录成功后,需要保存session. 新建的asp.net core的模板已经包含了Session ...

  8. 05-04 scikit-learn库之主成分分析

    目录 scikit-learn库之主成分分析 一.PCA 1.1 使用场景 1.2 代码 1.3 参数 1.4 属性 1.5 方法 二.KernelPCA 三.IncrementalPCA 四.Spa ...

  9. Cocos2d-x入门之旅[3]动作

    Cocos通过动作(Action)可以让精灵动起来,把数个动作组成序列(Sequence)就能让精灵做出连续的动作,在动作中我们可以改变精灵的位置,旋转角度,缩放比例,等等 动作(Action) 首先 ...

  10. 基于Spark的电影推荐系统(推荐系统~2)

    第四部分-推荐系统-数据ETL 本模块完成数据清洗,并将清洗后的数据load到Hive数据表里面去 前置准备: spark +hive vim $SPARK_HOME/conf/hive-site.x ...