express 基礎以及mongo基礎

express框架

產生的原因:
    1.http模塊在處理路由這塊比較雞肋
    2.http模塊在處理靜態資源時比較麻煩
    3.http在獲取瀏覽器的提交過來的參數時很麻煩
    4.express能解決url中有中文時,express能自動解碼
        
基本概念:
express是nodejs發送網絡請求的第三方框架,是NodeJS中一個優秀的 web 解決方案

地址:
https://www.npmjs.com/package/express
https://github.com/expressjs/express

安裝:
    npm i/install express --save

express使用步驟

利用express開啟web服務器的步驟:
1、在當前項目中使用 npm i/install express --save
2、導入express包
3、利用express對象創建一個application對象 app
4、在app對象上就有一系列方法(get,post)還可以可以分別設置請求路由
5、利用app.listen()監聽端口

GET方法獲取參數:
    直接從 req.query中就可以獲取,非常簡單
    
POST方法獲取參數:
    使用一個第三方包 body-parser

express的路由

/man/xz
/man/ld

/woman/qz
/woman/sw

如何使用:
    1.將某一類路由規則放入到一個js文件中,寫好相應的代碼,并且暴露出去
        const express = require('express');
        
        let route = express.Router(); //創建一個路由
        路由的處理...
        
        module.exports = route; //將創建的路由對象暴露出去
    
    2.在啟動服務器的js文件中,導入對應的路由,并且調用app.use方法使用即可
        const route = require('路由的路徑');
        
        app.use('路由規則',route); //哪些路由規則適用于該路由
        

開發注意事項:
    設置路由一定要寫在入口文件的代碼后面一些,最好寫在app.listen(xx) 的前一行即可;

express之next方法

使用方式:(有兩種)

    第一種:連寫方式,用得比較少
        app.get('/',(req,res,next)=>{
            res.write('1.0 ');
            next();
        },(req,res,next)=>{
            res.write('2.0 ');
            next();
        },(req,res)=>{
            res.end('3.0 end');
        });
        
    第二種:分開寫,用得比較多
        app.get('/',(req,res,next)=>{

            res.write('1.0');
            
            //觸發下一個同樣的路由的回調函數
            next('route');
        });
        
        app.get('/',(req,res)=>{
        
            res.end('2.0');
        });

調用的過程分析:
    當瀏覽器請求 http://127.0.0.1:8888/
    觸發第一個回調函數,當在第一個回調函數中手工執行next()的時候
    就會觸發第二個回調函數,一直下去直到最后一個回調函數被執行,那么最后
    這個回調函數可以不用寫next參數
    
使用注意:
    觸發下一個同樣的路由的回調函數,路由必須一致

express之通配符方法(all)與next方法聯合起來做權限驗證

使用方式:
    app.all('路由',(req,res,next)=>{

        if(登錄過){
            next();  //繼續往下執行真正的請求
        }else{
            res.end("請登錄"); //提示用戶登錄
        }
    });

注意點:
    app.all(xxx); 一定要在所有路由的最前面

express靜態資源處理

使用方式:
    app.use(express.static('靜態資源路徑')); 

訪問時的注意點:
    如果瀏覽器要訪問statics下面的site.css
    url應該是 http://127.0.0.1:8888/site.css 
    如果是http://127.0.0.1:8888/statics/site.css 反而報錯
    如果是statics下面的字母中的靜態資源,則一定要在url中加上子目錄
    
注意點:
    設置在路由或是app.use(路由),之前
    要在兩個地方寫,一個是html里面,還有一個地方是入口的js文件

MongoDB

數據庫概念

數據庫:數據存儲的倉庫

數據庫就是為我們方便的管理數據的一個平臺,例如對數據的存儲、修改、查詢等都非常的方便。

數據庫分類

數據庫產品有很多,以下是一些常見的數據庫產品:

  • MySQL
  • Oracle
  • DB2
  • SqlServer
  • MongoDB
  • etc.

數據庫沒有排名之分,各有各的應用場景,這里學習的是 MongoDB 數據庫。

MongoDB 數據庫

為了更好的學習 MongoDB 數據庫,大家可以參考菜鳥教程上的 MongoDB 數據庫教程文檔,
鏈接地址:http://www.runoob.com/mongodb/mongodb-tutorial.html

mongodb數據庫官網:https://www.mongodb.com/

下載地址:https://www.mongodb.com/download-center?jmp=nav
選擇好對應的版本下載即可

為什么選擇MongoDB?

理由:

    1.只要會js/json就會mongodb(學習成本低)
    2.mongodb對js的兼容性最好
    3.mongodb存數據就是存JSON

安裝與配置 MongoDB 數據庫環境

詳情見視頻:

怎么驗證安裝成功:
    在cmd終端中輸入: mongo --version 或是 mongod --version ,能看到版本好,說明安裝成功
    
如果終端中輸入 mongo --version 提示找不到命令,一定要看看是不是沒有配置mongodb的環境變量,并且配置環境變量之后一定要記得重啟cmd

window7安裝MongoDB存在的問題

建議:升級到window10

解決步驟:
    1.將你的操作系統升級到window7最新版
    2.安裝 vc_redist.x64.exe 
    3.如果你的電腦是32位的,再安裝32位的mongodb軟件 mongodb-win32-i386-3.2.11-signed.msi

MongoDB 數據庫存儲結構

[圖片上傳失敗...(image-d75d13-1513870122297)]

和Excel對比一下即可明白:

Excel                       MongoDB

創建工作簿 創建數據庫
創建一個sheet(工作表單) 創建集合
確立表頭,插入數據 插入文檔(確立表頭)

核心思想:
    1.分門別類的存儲數據
    2.mongodb是以`集合`的概念來區分不同數據的,比如用戶集合,商品集合,訂單集合等等,不同的數據要放在不同的集合中去統一管理
    3.集合里面存儲的可以認為是一個數組
    4.數組中的每一個對象,可以認為就是JSON對象,在mongodb中我們稱之為 `文檔`
    5.文檔的結構可以隨意,但是必須統一,也就是說,同一個集合中,所有的文檔一定要遵守相同的數據結構
    
其他:
    `集合`的作用就是用來隔離數據,分門別類的存儲數據

操作MongoDB的步驟

1.創建數據庫中數據的存儲目錄
2.啟動MongoDB的服務實例
3.創建數據庫
4.創建集合
5.創建文檔

MongoDB使用之前必做步驟1--創建數據目錄(必須)

我們在安裝完成MongoDB后需要創建一個存放數據的目錄。請注意,數據目錄應該放在根目錄下((如: C:\ 或者 D:\ 等 ),數據目錄的命名隨意,比如我就命名 mongodb_datas

MongoDB使用之前必做步驟2--啟動服務器(必須)

啟動MongoDB服務器的方式一:通過終端指令去啟動

    1.首先在終端切換到你的MongoDB的安裝目錄的bin目錄下(當然如果配置了環境變量在哪個目錄下都可以了)

    2.在終端執行: mongod.exe --dbpath c:/mongodb_datas ,如果成功啟動就表示一切都OK了
        
    注意點:
        1.32 位版本使用下面的命令啟動數據服務:
        ```
        mongod --dbpath 數據存儲路徑 --journal --storageEngine=mmapv1
        ```
        
        2.執行完上面的命令并成功開啟 MongoDB 數據服務實例之后,就把該控制臺最小化到一邊就可以了,
        千萬不要關閉,否則無法連接,如果對數據庫的操作結束,可以打開該控制臺通過 `Ctrl + C` 關閉。

啟動MongoDB服務器的方式二:方式一的延續,把上面的指令做成一個批處理文件.bat


啟動MongoDB服務器的方式三:將MongoDB服務器作為Windows服務運行

    請注意,你必須有管理權限才能運行下面的命令。執行以下命令將MongoDB服務器作為Windows服務運行:
    
    例子:
        mongod.exe --bind_ip 127.0.0.1 --logpath "C:/mongodb_datas/server_log/mongodb.log" --logappend --dbpath "c:/mongodb_datas" --port 27017 --serviceName "MongoDBServer" --serviceDisplayName "MongoDBServerDisplayName" --install
        
    
    補充:從Windows服務中卸載 MongoDB服務
        1.先停止要刪除的服務(比如MongoDBServer)
        2.以管理員身份運行cmd,在cmd中輸入: sc delete 服務名稱(比如MongoDBServer)
        
    注意點:
        1.mongodb.log 這個日志文件一定要先創建好,才能執行指令
        2.必須要以管理員的身份打開cmd窗口,并運行

如何連接到MongoDB服務器并且操作它?

注意:在進行連接之前請確保你的服務實例是開啟狀態的(不要關閉剛才開啟的數據服務實例)。

可以使用兩種方式來連接到MongoDB服務器并且操作它

連接方式1:使用MongoDB自帶的MongoDB后臺管理 Shell
    在終端中輸入 mongo 或是 mongo --host 127.0.0.1 --port 27017
    
    mongo 命令默認去連接本機上的 MongoDB 服務實例:`127.0.0.1:27017`,可以通過下面的命令
    指定連接的主機名和端口號:
    ```
    mongo --host 127.0.0.1 --port 27017
    ```
    
    如果看到類似于如下的字樣說明連接成功:
    ```
    MongoDB shell version v3.4.2
    connecting to: mongodb://127.0.0.1:27017
    MongoDB server version: 3.4.2
    Server has startup warnings:
    2017-01-18T18:49:53.865+0800 I CONTROL  [initandlisten]
    2017-01-18T18:49:53.865+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
    2017-01-18T18:49:53.866+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
    2017-01-18T18:49:53.866+0800 I CONTROL  [initandlisten]
    >
    ```
    如果提示 “無法連接主機”,請檢查你的 MongoDB 數據服務實例是否開啟。
    
操作方式1:在終端中使用mongodb的指令進行操作

        常見指令:
            見下一個知識點


連接及操作方式2:使用圖形化客戶端工具:
    robomongo(跨平臺) : https://robomongo.org/download

基本操作命令

可以參考:
    http://www.yiibai.com/mongodb/mongodb_create_collection.html
    
    http://www.runoob.com/mongodb/mongodb-tutorial.html
  • show dbs

    • 查看當前服務實例上所有的數據庫
  • use 數據庫名稱

    • 如果數據庫不存在,則創建數據庫,否則切換到指定數據庫。
  • db.dropDatabase()

    • 刪除數據庫,注意,要在切換的數據庫中刪除
  • db

    • 查看當前所處的數據庫
  • show collections

    • 查看當前數據庫中所有的集合
  • db.createCollection("集合名稱")

    • 創建集合
  • db.集合名稱.drop()

    • 刪除集合
  • db.集合名稱.insert({數據文檔})

    • 插入的每一條文檔會自動幫我們生成一個_id字段,它是mongodb自動維護的,不需要我們關心
  • db.集合名稱.find()

    • 查詢指定集合中所有的數據
    • 可以通過 db.集合名稱.find().pretty() 美化輸出格式
    • 默認是查詢所有,可以通過:db.集合名稱.find({查詢條件}) 按條件查詢集合中的數據
    • 模糊查詢的條件 {要查詢的字段:{$regex: '關鍵字'}}
  • db.集合名稱.update({更新條件}, {要更新的字段})

    • 更新指定集合數據,注意點,要更新的字段一定要這樣寫 {$set:{字段的名稱:字段的值}},
  • db.集合名稱.update({更新條件}, {要更新的字段},{multi:true})

    • 更新多條文檔,{multi:true}默認是false
  • db.集合名稱.remove({刪除條件})

    • 刪除指定集合中的數據
  • db.集合名稱.remove({刪除條件},{multi:true})

    • 刪除多條文檔,{multi:true}默認是false
  • exit 退出當前操作

  • cls 清屏

    注意點:更新和刪除時一般都需要帶條件,除非是全部更新與全部刪除,不過全部更新與全部刪除這樣很危險,實際操作過程中很少

使用 Node 操作 MongoDB

安裝 MongoDB 官方提供的驅動包:

npm install --save mongodb

具體操作方式請參考官方文檔:https://www.npmjs.com/package/mongodb

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容