node.js+express+mongodb对用户进行增删查改
一、用到的相关技术
- 使用 Node.js 的 express 框架搭建web服务
- 使用 express 中间件 body-parse 解析表单 post 请求体
- 使用 art-template 模板引擎渲染页面
- 使用第三方包 mongoose 来操作 MongoDB 数据库
二、在命令行用 npm 执行相关的命令
- 初始化项目,在命令行执行 npm init 然后一路回车就行了(或者直接 npm init -y)生成 package.json 文件,它相当于是你项目的说明书
npm init
- 安装需要用到的各种包
# Express 框架
npm install express
# 模板引擎(express-art-template 是模板引擎与 express 的关联包)
npm install art-template express-art-template
# express 中间件 body-parser
npm install body-parser
# mongoose
npm install mongoose
三、项目结构说明
四、路由设计
请求方法 | 请求路径 | get 参数 | post 参数 | 备注 |
---|---|---|---|---|
GET | /user | 渲染首页 | ||
GET | /add | 渲染添加用户页面 | ||
POST | /add | name、age、gender、job、hobbies | 处理添加用户请求 | |
GET | /edit | id | 渲染编辑页面 | |
POST | /edit | id、name、age、gender、job、hobbies | 处理编辑请求 | |
GET | /delete | id | 处理删除请求 |
五、编写代码
-
入口模块: app.js
/** * app.js 服务入口模块 * 1. 创建服务 * 2. 做服务相关的配置 * 2.1 模板引擎 * 2.2 body-parser 解析表单 post 请求体 * 2.3 提供相关的静态资源服务(开放public目录) * 3. 挂载路由 * 4. 监听端口 开启服务 * */ var express = require('express') var router = require('./router.js') var bodyParser = require('body-parser') //创建你的服务器应用程序 var app = express() //指定 .html 后缀的文件使用的解析引擎 app.engine('html',require('express-art-template')) //开发静态资源 app.use('/public/',express.static('./public/')) app.use('/node_modules/',express.static('./node_modules/')) // 配置 body-parser 中间件(插件,专门用来解析表单 POST 请求体) // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) // parse application/json app.use(bodyParser.json()) //把路由挂载到 app 服务中 app.use(router) //开启服务 app.listen(3000,function(){ console.log('server is running ...') })
-
路由模块: router.js
/** * * router.js 路由模块 * 根据不同的请求方法 + 请求路径 设置具体的请求处理函数 * * */ var express = require('express') var User = require('./user.js') //1. 创建一个路由 var router = express.Router() //2. 把路由都挂载到 router 路由容器中 // =============渲染用户列表页面============= router.get('/users',function(req,res){ User.find(function(err,users){ if(err){ return res.status(500).send('Server err') } res.render('index.html',{ users:users}) }) }) // =============渲染添加用户信息页面=========== router.get('/add',function(req,res){ res.render('add.html') }) // ==============处理添加用户================== router.post('/add',function(req,res){ //1. 获取表单数据 req.body //2. 处理:将数据保存到 db.json 文件中用以持久化 new User(req.body).save(function(err){ if(err){ return res.status(500).send('server err') } //3. 重定向到首页 res.redirect('/users') }) }) // =================渲染编辑用户信息页面============ router.get('/edit',function(req,res){ //1. 在客户端的列表中处理链接问题(需要有 id 参数) //获取要编辑的学生 通过id User.findById(req.query.id.replace(/"/g,''),function(err,user){ if(err){ return res.status(500).send('Server error') } res.render('edit.html',{ user:user }) }) }) // ==================处理编辑用户信息================ router.post('/edit',function(req,res){ //1. 获取表单数据 req.body //2. 通过 id 更新 User.findByIdAndUpdate() //3. 重定向到首页 User.findByIdAndUpdate(req.body.id.replace(/"/g,''),req