1. 程式人生 > >【重點突破】—— Nodejs+Express+MongoDB的使用基礎

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

查詢 port 實體 其中 html文本 text 前言 star fff

前言:最近學習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:非關系型數據庫

  • 官網:https://www.mongodb.com/ 下載安裝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


註:轉載請註明出處

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