Slide 1

Slide 1 text

資料層:Mongoose NTU CCSP 2012Fall

Slide 2

Slide 2 text

目標 • 安裝mongodb • 使用mongo shell • 簡易CRUD

Slide 3

Slide 3 text

環境 • Windows 7 • Sublime Text 2 • Node.js 0.8.x • Express.js 3.0 • Mongoose.js

Slide 4

Slide 4 text

MONGODB INSTALL

Slide 5

Slide 5 text

Step 0: 下載mongodb

Slide 6

Slide 6 text

Step 0: 下載mongodb

Slide 7

Slide 7 text

Step 1: 解壓縮移動到C 並命名為mongodb

Slide 8

Slide 8 text

Step 2: 設定環境

Slide 9

Slide 9 text

Step 3: 啟動mongod

Slide 10

Slide 10 text

Step 4: 進入mongo shell

Slide 11

Slide 11 text

MONGO SHELL

Slide 12

Slide 12 text

MongoDB • 是一種NoSQL • 不需要資料綱要(Schema-Free) • 允許巢狀資料 • 沒有JOIN 沒有TRANS • 簡單說就是一個存放JSON的資料庫 所以才 會跟Node.js很合

Slide 13

Slide 13 text

MongoDB練習 • http://try.mongodb.org/

Slide 14

Slide 14 text

FIRST LOOK OF MONGOOSE

Slide 15

Slide 15 text

Step -1: 請先安裝mongoose npm install mongoose -g

Slide 16

Slide 16 text

Step 0: 產生綱要 1. 產生schema 2. 產生model instance.save(fn(err){}) 儲存 Model.find() 搜尋

Slide 17

Slide 17 text

Step 0: 產生綱要

Slide 18

Slide 18 text

Step 1: 更新與刪除 • Model.remove() 刪除所有文件 • instance.remove() 刪除一個文件

Slide 19

Slide 19 text

Step 2: 綱要進階 • 常用type String, Number, Date, ObjectId • Array用法 • Embed Docs => Array嵌入物件

Slide 20

Slide 20 text

CRUD BY EXPRESS+MONGOOSE

Slide 21

Slide 21 text

Step 0: 建立express專案

Slide 22

Slide 22 text

Step 1: 修改package.json

Slide 23

Slide 23 text

Step 2: 安裝套件

Slide 24

Slide 24 text

Step3: 編輯models/User.js

Slide 25

Slide 25 text

Step 3: 編輯 app.js • mongoose.connect和 mongoose.createConnection是不 同的 • 前者是模組等級 後者是獨立連線 • 沒有指明連線的model會嘗試使用 並等待模組等級連線建立

Slide 26

Slide 26 text

Step 4: Create • 編輯route/user.js • 注意callback的例外

Slide 27

Slide 27 text

Step 4: Create • 編輯view/index.ejs

Slide 28

Slide 28 text

Step 4.5: 來試試看吧

Slide 29

Slide 29 text

Step 5: Read • Read包含兩種 • 讀取集合 • 讀取單一物件

Slide 30

Slide 30 text

Step 6: Update

Slide 31

Slide 31 text

Step 6: Update • Callback hell很痛苦 • 銀幕在寬都不夠

Slide 32

Slide 32 text

Step 8: step.js解決cb hell • 解決callback hell • Err可以很帥氣的throw

Slide 33

Slide 33 text

遺珠之憾 • Population http://mongoosejs.com/docs/populate.html • Middleware http://mongoosejs.com/docs/middleware.html • Advanced Query http://mongoosejs.com/docs/queries.html • SQL to Mongo mapping http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Map ping+Chart • Step.js https://github.com/creationix/step