Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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