48、mongoose入門
前言:本入門篇文章我是直接把mongoose官網中的“Quick Start”看了一遍,然後在此基礎上自己於本機上實踐一番後寫的;所以,文章中的程式碼和解釋性文字大部分都來著官網,我這只不過是白話版,大家可以去官網閱讀後,再結合我這篇文章親自實踐操作一番,效果可能會更好。
1、約定
現在假設我們想把看到的每一隻貓都用資料庫給記錄下來,即每隻貓都是一條document
(資料行)。
2、什麼是mongoose?
Mongoose是MongoDB的一個物件模型工具,是基於node-mongodb-native開發的MongoDB nodejs驅動,可以在非同步的環境下執行。同時它也是針對MongoDB操作的一個物件模型庫,封裝了MongoDB對文件的的一些增刪改查等常用方法,讓NodeJS操作Mongodb資料庫變得更加靈活簡單。
ofollow,noindex">mongoose入門—狼叔
mongoose官網快速入門篇3、安裝mongoose
$ npm install mongoose
4、連線資料庫並監聽資料庫是否連線成功
var mongoose = require('mongoose'); mongoose.connect('[mongodb://localhost/test');](mongodb://localhost/test');) mongoose.connection.on('error',(err) => { console.log(`資料庫連線失敗${err}`); }); mongoose.connection.on('open',() => { console.log('資料庫連線成功'); });
OK,現在假設我們連線資料庫已經成功了。
5、定義Schema和模型
(1)既然要記錄所看到的每一隻貓,更為具體一點,我們就是要記錄所看到的的每一隻貓的名字
在mongoose
中,所有的東西都來源自Scehma
,我們用它來定義文件的結構。
var kittySchema = new mongoose.Schema({ name: String });
(2)現在我們擁有一個name屬性
為string型別
的Schema
,下一步用它構造生成一個模型Model
var Kitten = mongoose.model('Kitten', kittySchema);
6、例項化Model
(1)模型是用於構造文件的類,接下來,讓我們例項化這個Ketten模型
,把我們剛剛在路邊上看到的那隻貓(資料記錄行document
)給記錄下來,起個名叫做塞冷絲
var silence = new Kitten({name: 'Silence'}); console.log(silence.name); // 'Slience'
7、新增函式方法
(1)貓都是會叫的,讓我們看看怎麼在文件中新增“說話”的功能
// 記得一定要在構造生成Model之前把這個方法新增到Schema kittySchema.methods.speak = function() { var greeting = this.name ? 'My name is " + this.name : 'I do not have a name'; console.log(greeting); } var Kitten = mongoose.model('Kitten', kittySchema);
(2)這樣,在Schema
的methods
中添加了一個speak
的方法,該方法會暴露在每一個文件例項中,於是所有的例項都可訪問到這個方法(類似於原型鏈中方法的繼承)
silence.speak(); // My name is Silence
8、儲存到資料庫
ok,現在我們看到的這隻貓又有名字又會說話了,接下來就是把它儲存到MongoDB資料庫中;
save方法
用於儲存document
到資料庫,第一個引數err
用於檢測回撥函式是否報錯。
silence.save(function(err, silence) { if(err) return console.log(err); silence.speak(); }
9、查詢
隨著時間的流逝,現在我們想看看已經記錄了多少隻貓了;
我們可以通過Kitten模型
訪問我們所有記錄過的所有小貓(資料記錄行document
)
Kitten.find(function(err, doc) { if(err) return console.log(err); console.log(doc); }
10、結言
還是回到開頭,這篇文章主要還是翻譯了官網然後加上自己的一些理解以較白話的形式呈現出來的,希望對你理解有幫助,翻譯水平不是很好,見諒。