使用mongoose之前,首先要確保你的電腦安裝了MongoDB和Node。
安裝MongoDB的教程可見:
http://www.jianshu.com/p/1bb663918cfd
然後,我們可以用npm指令來安裝mongoose:
$ npm install mongoose
接下來,我們就可以使用mongoose來連接MongoDB了,連接方法如下:
// getting-started.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
下面,可以爲本次的連接定義兩個事件監聽的回調函數,當連接成功open和出錯error的時候,會分別調用。
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
});
連接成功後,我們就可以對數據庫進行操作。我們默認下面的代碼是寫在連接成功的回調函數中。
規則1: Schema
在Mongoose中,Schema是所有數據的框架和源頭。我們必須首先創建Schema。
var kittySchema = mongoose.Schema({
name: String
});
上面這樣定義的Schema有一個name屬性,類型爲String。
下一步,利用Schema,可以生成模型Model。
var Kitten = mongoose.model('Kitten', kittySchema);
模型相當於是一個類,我們使用這個”類”來創建實例,也就是具體的數據對象。
var silence = new Kitten({ name: 'Silence' });
console.log(silence.name); // 'Silence'
如果想要給Kitten類的實例文檔添加方法,那麼需要在kittySchema上定義:
// NOTE: methods must be added to the schema before compiling it with mongoose.model()
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);
下面,新建的kittens就可以擁有speak方法了:
var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak(); // "Meow name is fluffy"
目前爲止,我們還沒有保存任何東西到MongoDB中。每個文檔(實例)都可以被保存到數據庫中,只需要使用save方法即可。
fluffy.save(function (err, fluffy) {
if (err) return console.error(err);
fluffy.speak();
});
之後,我們可以通過Model來搜索我們保存的所有kittens.
Kitten.find(function (err, kittens) {
if (err) return console.error(err);
console.log(kittens);
})
當然也可以使用filter來尋找:
Kitten.find({ name: /^fluff/ }, callback);
這樣,我們就可以找到所有名字以Fluff開頭的kittens。在callback函數中,我們可以查看它們。