【重點突破】—— Nodejs+Express+MongoDB的使用基礎

 前言:最近學習vue和react的高階項目,都須要和Nodejs+Express+MongoDB結合實現全棧開發。這裏結合實例Demo和所學項目集中總結一下這部分服務端的基礎知識。html


1、Express+mongodb開發web後臺接口Demovue

    Express開發web接口node

  • 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配置後必須從新啓動)mysql

  • 監聽路由和響應內容,使用nodemon自動重啓react

    npm install -g nodemon

    啓動應用: nodemon server.js web

  •  其它特性
  1. app.get、app.post分別開發get和post接口
  2. app.use使用模塊
  3. res.send、res.json、res.sendfile響應不一樣的內容(分別返回Html文本、JSON、文件)

    Mongodb:非關係型數據庫sql

  • 啓動服務:net start MongoDB
  • 關閉服務:net stop MongoDB
  • 安裝mongoose
    npm install mongoose --save
  • 經過mongoose操做mongodb存儲的就是json,至關於mysql來講,要容易的多  mongodb

    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文檔類型express

  • 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

 

2、Express和mongodb結合  

一、mongodb獨立工具函數

二、express使用body-parser支持post參數

三、使用cookie-parser存儲登陸信息cookie

  


注:轉載請註明出處

相關文章
相關標籤/搜索