快速開始
在安裝了mongoDB和node的情況下,我們安裝mongoose,你可以把mongoose理解為是用來操作mongoDB。
npm install mongoose
安裝完后,我們在項目中引用mongoose,并連接數據庫。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/user');
如上我們看到連接的數據庫為user,如果數據庫中沒有user這個庫則會自動創建(當你往改庫中save數據的時候創建)。
連接數據庫的時候,我們需要知道連接是否成功,那么我們可以通過監聽來判斷是否成功:
var db = mongoose.connection;
db.on('open', function(){console.log('connect success')});
db.on('error', function(){console.log('connect error')});
打開連接并成功后,我們開始使用mongoose。使用過mongoose一切都是派生于Schema。(個人目前的理解是,每個Schema都對應的是一張表)。
var kittySchema = mongoos.Schema({
name: String
})
如上,我們定義的一張"表",屬性為name,為String類型。下一步是將我們的"表",編譯到模型中。
var Kitten = mongoose.model('Kitten', kittySchema );
以上是我們構建的模型(model),每一個模型都是構建文檔(document)的類,這種情況下,每一個文檔相當于一個實例。其屬性和行為是我們在Schema中所定義的。
var silence = new Kitten({name: 'Silence'});
console.log(silence.name); //'Silence'
那么,我們如何給我們的文檔(document)添加行為呢?
kittySchema .methods.speak = function(){
var greeting = this.name ? "Meow name is " + this.name : "I don't have a name";
console.log(greeting)
}
var Kitten = mongoose.model('Kitten', kittySchema);
添加到Schema的屬性methods上的方法,經過編譯為模型后,然后在每個文檔(document)實例上都可以訪問。
var fully = new Kitten({name: 'fluffy'});
fully.speak(); // '"Meow name is fluffy"'
上面簡單的介紹了關于一個庫的流程,那么我們如何保存數據入庫呢?每個文檔(document)可以調用其save()方法保存到數據庫,其回調函數的第一個參數是一個錯誤對象(如果發生錯誤的話)。第二個參數就是你當前存入表中的數據。
fully.save(function(err, fully){
if(err){console.log('save error')};
fully.speak();
})
存入了數據,那我們想要查看存入的數據改怎么操作呢?此時并不是通過文檔(document)實例操作,而是通過模型(model)進行操作。
Kitten.find(function(err, kittens){
console.log(kittens)
})
個人發現,find的調用會在save之前。還不太清楚是什么原因,有待查證。
以上便是mongoose的快速簡單操作,希望對之后概念的理解起一個好的鋪墊作用。
官方文檔地址:http://www.nodeclass.com/api/mongoose.html#quick_start