zoukankan      html  css  js  c++  java
  • 【重点突破】—— Nodejs+Express+MongoDB的使用基础

     前言:最近学习vue和react的高阶项目,都需要和Nodejs+Express+MongoDB结合实现全栈开发。这里结合实例Demo和所学项目集中总结一下这部分服务端的基础知识。


    一、Express+mongodb开发web后台接口Demo

        Express开发web接口

    • Express:基于nodejs,快速、开放、极简的web开发框架  【官网
    • 安装express
      npm install express --save
      
    • 新建server目录:server.js编写后端代码
      const express = require('express');
      
      //新建app模块
      const app = express()
      
      app.get('/', function(req, res){
          res.send('<h1>Hello world</h1>')   //发送Html
      })
      
      app.get('/data', function(req, res){
          res.json({name:'imooc React App',type:'IT'}) //发送json
      })
      
      app.listen(9093, function(){  //自定义监听端口
          console.log('Node app start at port 9093')
      })

    • 查看调试页面:浏览器访问localhost:9093(每次更新server配置后必须重新启动)

    • 监听路由和响应内容,使用nodemon自动重启

      npm install -g nodemon

      启动应用: nodemon server.js 

    •  其它特性
    1. app.get、app.post分别开发get和post接口
    2. app.use使用模块
    3. res.send、res.json、res.sendfile响应不同的内容(分别返回Html文本、JSON、文件)

        Mongodb:非关系型数据库

    • 启动服务:net start MongoDB
    • 关闭服务:net stop MongoDB
    • 安装mongoose
      npm install mongoose --save
    • 通过mongoose操作mongodb存储的就是json,相当于mysql来说,要容易的多  

        Mongoose基础使用

    • Connect连接数据库
      const mongoose = require('mongoose')
      //链接mongo 并且使用react这个集合
      const DB_URL = 'mongodb://127.0.0.1:27017/imooc'  //前提:开启Mongodb服务
      mongoose.connect(DB_URL)
      mongoose.connection.on('connected', function(){
          console.log('mongo connect success')
      })
    • 定义文档模型,Schema和model新建模型
    • Mongoose重要概念
    1. Schema: 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 
    2. Model: 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
    3. Entity: 由Model创建的实体,它的操作也会影响数据库
    • Schema→Model→Entity关系
    1. Schema生成Model 
    2. Model创造Entity 
    3. Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性

        Mongoose文档类型

    • String, Number等数据结构
      //类似于mysql的表 mongo里有文档、字段的概念
      const User = mongoose.model('user', new mongoose.Schema({
          user: {type:String, require:true},
          age: {type:Number, require:true}
      }))
    • 定create、remove、update分别用来增、删、改的操作
    1. 新增数据
      //新增数据
      User.create({
          user: 'xiaohong',
          age: 10
      }, function(err, doc){
          if(!err){
               console.log(doc)
           }else{
               console.log(err)
           }
      })
      
      app.get('/data', function(req, res){
          //查询User全部数据
          User.find({}, function(err, doc){
            res.json(doc)
          })
      })

        

    2. 删除数据
      //删除数据
      User.remove({age:10},function(err, doc){
          console.log(doc)
      })

    3. 更新数据
      //更新数据
      User.update({'user':'xiaoming'},{'$set':{age: 26}}, function(err, doc){
           console.log(doc)
      })

    • find和findOne用来查询数据
    1. find:查找到的是数组,其中可包含多条数据对象
      //查询数据
      User.find({age:18}, function(err, doc){
              res.json(doc)
      })

    2. findOne:查找到的是数据对象本身

      //查询数据
      User.findOne({user:'xiaoming'}, function(err, doc){
              res.json(doc)
      })

        Demo实例代码

    /**
     * express Demo
     */
    const express = require('express');
    const mongoose = require('mongoose')
    
    //链接mongo 并且使用react这个集合
    const DB_URL = 'mongodb://127.0.0.1:27017/imooc'
    mongoose.connect(DB_URL)
    mongoose.connection.on('connected', function(){
        console.log('mongo connect success')
    })
    
    //类似于mysql的表 mongo里有文档、字段的概念
    const User = mongoose.model('user', new mongoose.Schema({
        user: {type:String, require:true},
        age: {type:Number, require:true}
    }))
    
    // 新增数据
    // User.create({
    //     user: 'xiaolan',
    //     age: 18
    // }, function(err, doc){
    //     if(!err){
    //         console.log(doc)
    //     }else{
    //         console.log(err)
    //     }
    // })
    
    //删除数据
    // User.remove({user: 'xiaolan'},function(err, doc){
    //     console.log(doc)
    // })
    
    //更新数据
    // User.update({'user':'xiaoming'},{'$set':{age: 26}}, function(err, doc){
    //     console.log(doc)
    // })
    
    
    //新建app模块
    const app = express()
    
    app.get('/', function(req, res){
        res.send('<h1>Hello world</h1>')   //发送Html
    })
    
    app.get('/data', function(req, res){
        //查询数据
        User.find({}, function(err, doc){
            res.json(doc)
        })
        // res.json({name:'imooc React App',type:'IT'}) //发送json
    })
    
    app.listen(9093, function(){
        console.log('Node app start at port 9093')
    })
    View Code

    二、Express和mongodb结合  

    1、mongodb独立工具函数

    2、express使用body-parser支持post参数

    3、使用cookie-parser存储登录信息cookie

      


    注:转载请注明出处

  • 相关阅读:
    hdu 1301 prime算法
    hdu 4763 kmp算法
    linux上安装程序出现的问题汇总
    linux之下载工具wget
    python之os模块
    管道和xargs的区别
    linux下查找文件或目录(which,whereis,locate,find)
    blast+学习之search tools
    linux的文件,目录操作命令(mv,rm,cp)
    PHPCMS V9 简单的二次开发
  • 原文地址:https://www.cnblogs.com/ljq66/p/10254531.html
Copyright © 2011-2022 走看看