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
node留言板的更多相关文章
- node留言板开发————node.js
各位需要的话可以下载去看一下. 源码下载链接:https://download.csdn.net/download/weixin_41018304/11833778
- 原生node实现简易留言板
原生node实现简易留言板 学习node,实现一个简单的留言板小demo 1. 使用模块 http模块 创建服务 fs模块 操作读取文件 url模块 便于path操作并读取表单提交数据 art-tem ...
- 用 Express4 写一个简单的留言板
Knowledge Dependence:阅读文本前,你需要熟悉 Node.js 编程.Express 以及相关工具和常用中间件的使用. Node.js 以其单线程异步非阻塞的特点,越来越被广大的 W ...
- AngularJs学习笔记(制作留言板)
原文地址:http://www.jmingzi.cn/?post=13 初学Anjularjs两天了,一边学一边写的留言板,只有一级回复嵌套.演示地址 这里总结一下学习的过程和笔记.另外,看看这篇文章 ...
- dd——留言板再加验证码功能
1.找到后台-核心-频道模型-自定义表单 2.然后点击增加新的自定义表单 diyid 这个,不管他,默认就好 自定义表单名称 这个的话,比如你要加个留言板还是投诉建议?写上去呗 数据表 这个不要碰, ...
- asp.net留言板项目源代码下载
HoverTree是一个asp.net开源项目,实现了留言板功能. 前台体验网址:http://hovertree.com/guestbook/ 后台请下载源代码安装. 默认用户名:keleyi 默认 ...
- html的留言板制作(js)
这次留言板运用到了最基础的localstorage的本地存储,展现的效果主要有: 1.编写留言2.留言前可以编辑自己的留言昵称.不足之处: 1.未能做出我喜欢的类似于网易的叠楼功能. 2.未能显示评论 ...
- 11月8日PHP练习《留言板》
一.要求 二.示例页面 三.网页代码及网页显示 1.denglu.php 登录页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...
- [课程设计]Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案)
Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统W ...
随机推荐
- springboot启动后自动退出
有时新建的springboot启动后自动退出运行,如图所示: 此种情况大都数是因为pom文件加入了tomcat的依赖,与springboot内嵌的tomcat冲突导致,所以只需将pom文件中的tomc ...
- j2ee开发之Spring2.5框架学习笔记
Spring 2.5框架学习笔记 1.是一个开源的控制反转IOC和面向切面AOP的容器框架 2.IOC控制反转 public class PersonServiceBean { private Per ...
- 理解JS引擎的执行机制
首先,请牢记2点: (1) JS是单线程语言 (2) JS的Event Loop是JS的执行机制.深入了解JS的执行,就等于深入了解JS里的event loop 1.灵魂三问 : JS为什么是单线程的 ...
- 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》
<菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...
- 【Java】用Freemarker完美导出word文档(带图片)
Java 用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...
- .NET进阶篇-语言章-2-Delegate委托、Event事件
知识只有经过整理才能形成技能 整个章节分布简介请查看第一篇 内容目录 一.概述 二.解析委托知识点 1.委托本质 2.委托的使用 3.委托意义 逻辑解耦,减少重复代码 代码封装支持扩展 匿名方法和La ...
- Asp.Net Core中Session使用
web程序中,Session是一个无法避开的点. 最近新开项目,打算从开始搭建一个基础的架子,后台用户登录成功后,需要保存session. 新建的asp.net core的模板已经包含了Session ...
- 05-04 scikit-learn库之主成分分析
目录 scikit-learn库之主成分分析 一.PCA 1.1 使用场景 1.2 代码 1.3 参数 1.4 属性 1.5 方法 二.KernelPCA 三.IncrementalPCA 四.Spa ...
- Cocos2d-x入门之旅[3]动作
Cocos通过动作(Action)可以让精灵动起来,把数个动作组成序列(Sequence)就能让精灵做出连续的动作,在动作中我们可以改变精灵的位置,旋转角度,缩放比例,等等 动作(Action) 首先 ...
- 基于Spark的电影推荐系统(推荐系统~2)
第四部分-推荐系统-数据ETL 本模块完成数据清洗,并将清洗后的数据load到Hive数据表里面去 前置准备: spark +hive vim $SPARK_HOME/conf/hive-site.x ...