vue+express+mongo之踩坑--Mongoose快速入門

快速開始

在安裝了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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容