node.js+express+mongodb对用户进行增删查改

node.js+express+mongodb对用户进行增删查改

一、用到的相关技术

  1. 使用 Node.js 的 express 框架搭建web服务
  2. 使用 express 中间件 body-parse 解析表单 post 请求体
  3. 使用 art-template 模板引擎渲染页面
  4. 使用第三方包 mongoose 来操作 MongoDB 数据库

二、在命令行用 npm 执行相关的命令

  1. 初始化项目,在命令行执行 npm init 然后一路回车就行了(或者直接 npm init -y)生成 package.json 文件,它相当于是你项目的说明书
npm init
  1. 安装需要用到的各种包
# 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 处理删除请求

五、编写代码

  1. 入口模块: 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 ...')
    })
    
    
    
  2. 路由模块: 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值