Mongoose其實就是一套把MongoDB再包裝使用的一套工具,不過因為我是直接碰Mongoose,所以也沒辦法說明比MongoDB好的地方,能力不足的地方只能請各位見諒了,以下把自己讀官方文件的筆記彙整出來,希望能幫到需要的人。
一. 行前準備
- 安裝Node.js
- 安裝MongoDB(測試時還是要啟動本地端資料庫)
- 安裝Mongoose:
npm install mongoose
如果有package.json記得要npm install mongoose --save
喔!
二. 連接MongoDB
1. 匯入Mongoose檔
var mongoose = require("mongoose");
2. 連接MongoDB伺服器
本地端測試的話直接使用:
var db = mongoose.connect("mongodb://localhost/test");
如果非本地端請自行修改格式:文件
mongodb://<username>:<password>@<host1>:<port1>/<dbName>
3. 綁定事件
首先記得綁一下error事件,除錯是很重要的!
db.on('error', console.error.bind(console, 'connection error:'));
接著是順利連線到伺服器,開始執行callback
db.once(‘open’, function(){
//接下來的code都寫在這裡面
});
三. 建立Schema
如果有用過MySQL,有點類似把有哪些欄位、這些欄位是什麼格式先定義好,我自己是這樣理解的啦XD
var kittySchema = mongoose.Schema({
name: String,
age: Number
});
為Schema增加Method
特別的地方是,每個Schema還可以新增method,這樣之後編譯的Model就包含該method可用。
var kittySchema.methods.speak = function(){
var greeting = this.name
? "Meow, my name is" + this.name //如果名字有賦值
: "I don't have a name"; //如果名字沒賦值
console.log(greeting); //log出greeting
};
之後建立好Document就可以呼叫speak();
囉,之後會再出現。
四. 編譯成Model
定義好一個Schema之後,還要將其編譯成一個Model,才能夠拿來生成Document,可能有點陌生,我個人的理解是,Schema是Model的原型架構,而Model就是被編譯出來的Class,而Document則是Object。
MySQL的Row概念上也類似MongoDB的Document,Table則類似Collection。
var Kitten = mongoose.model('Kitten', kittySchema); //Kitten類別
五. 建立Document
最後就是建立Document了!
var yummy = new Kitten({name: "yummy", age: 3}); //yummy物件
六. 存入Database內
yummy.save(function(err, yummy){
if(err)
return console.log(err);
yummy.speak(); //"Meow, my name is yummy"
});
七. 尋找資料
存資料進去之後也要能取資料出來
取出全部的Document
Kitten.find(function(err, kittens){ //kittens是取出來的資料
if(err)
return console.log(err);
console.log(kittens);
});
篩選過後再取出資料
Kitten.find({name: /^yumm/}, callback); //正規表示式
0 Comments
1 Pingback