Mongoose

Mongoose是一個(gè)將JavaScript對(duì)象與數(shù)據(jù)庫(kù)產(chǎn)生關(guān)系的一個(gè)框架,object related model摆碉。操作對(duì)象塘匣,就是操作數(shù)據(jù)庫(kù)了;對(duì)象產(chǎn)生了兆解,同時(shí)也持久化了馆铁。這個(gè)思路是Java三大框架SSHHibernate框架的思路。徹底改變了人們使用數(shù)據(jù)庫(kù)的方式锅睛。

mongoose.jpg
  • mongoose 第一個(gè)小demo
/**
 * Created by 黃森 on 2017/8/6.
 */
//引包埠巨,并不需要引用mongodb這個(gè)包
var mongoose = require('mongoose');
//鏈接數(shù)據(jù)庫(kù),haha是數(shù)據(jù)庫(kù)名字
mongoose.connect('mongodb://localhost/database');

//創(chuàng)建了一個(gè)模型。貓的模型现拒。所有的貓辣垒,都有名字,是字符串印蔬⊙埃“類(lèi)”。
var Cat = mongoose.model('Cat', { name: String });
//實(shí)例化一只貓
var kitty = new Cat({ name: 'miaomiao' });
//調(diào)用這只貓的save方法侥猬,保存這只貓
kitty.save(function (err) {
    console.log('喵喵喵');
});

var tom = new Cat({"name":"湯姆"});
tom.save(function(){
    console.log('喵喵喵');
});

  • 使用mongosse的步驟

1例驹、數(shù)據(jù)庫(kù)連接

var mongoose = require('mongoose');
//創(chuàng)建數(shù)據(jù)庫(kù)連接
var db=mongoose.createConnection('mongodb://127.0.0.1:27017/database');
//監(jiān)聽(tīng)open事件
db.once('open', function (callback) {
    console.log("數(shù)據(jù)庫(kù)成功連接");
});

2、定義模型

  • 創(chuàng)建一個(gè)schema結(jié)構(gòu)退唠。例如:創(chuàng)建一個(gè)student模型
var studentSchema = new mongoose.Schema({
    name     :  {type : String},
    age      :  {type : Number},
    sex      :  {type : String}
});

  • 創(chuàng)建靜態(tài)方法
//查找學(xué)生方法
studentSchema.statics.findStudent = function(name, callback) {
    this.model('Student').find({name: name}, callback);   
    //this.model('Student')指的是當(dāng)前這個(gè)類(lèi)
};
//修改學(xué)生信息方法
studentSchema.statics.update = function(conditions,update,options,callback){
    this.model("Student").update(conditions, update, options, callback);
   //參數(shù)鹃锈,第一個(gè)要改的字段,第二個(gè)要改成什么瞧预,第三個(gè)可以不傳屎债,第四個(gè)為回掉函數(shù)
}
//修改方法參數(shù)示例比如:
Student.update({"name":"小明"},{$set : {"age":30}},{},function(){
   console.log("改年齡成功");
});

  • 創(chuàng)建了一個(gè)模型,就是學(xué)生模型垢油,就是學(xué)生類(lèi)盆驹。
//類(lèi)是基于schema創(chuàng)建的。
var studentModel = db.model('Student', studentSchema);
  • 向外暴露方法
module.exports = studentModel;
附:ObjectId的獲取方法:
var ObjectId=require('mongoose').Types.ObjectId;

mongoose的操作基本上就是以上流程滩愁,對(duì)于前臺(tái)操作的時(shí)候就不用操作數(shù)據(jù)庫(kù)躯喇,只操作類(lèi),就可以做到對(duì)數(shù)據(jù)庫(kù)的CRUD

nodejs小結(jié)

  • nodejs特點(diǎn):?jiǎn)尉€(xiàn)程硝枉,異步I/O玖瘸,事件驅(qū)動(dòng);
  • 適合的程序:就是沒(méi)有太多計(jì)算檀咙,I/O比較多的業(yè)務(wù)雅倒;舉例:留言本,考試系統(tǒng)弧可,論壇蔑匣,圖片裁切服務(wù)器等
  • Nodejs原生模塊:http,fs,path,url;靜態(tài)服務(wù)劣欢,簡(jiǎn)單路由;get裁良,post請(qǐng)求凿将;
  • 好用的第三方模塊:formidable,gm,express;
  • express:中間件,MVC建站价脾,模版引擎ejs,靜態(tài)服務(wù)牧抵,簡(jiǎn)單路由,get,post請(qǐng)求侨把,md5加密犀变,圖片上傳等;
  • 服務(wù)器的一些概念:Cookie(舉例:猜你喜歡,臨時(shí)存放在客戶(hù)電腦中秋柄;cookie-parser模塊)获枝,Session(隨機(jī)的密鑰,用express-session模塊)骇笔;
  • mongodb:安裝省店,開(kāi)機(jī),導(dǎo)入數(shù)據(jù)笨触,通過(guò)shell操作數(shù)據(jù)庫(kù)懦傍;mongovue可視化工具;nodejs做CRUD(增刪改查操作)芦劣;實(shí)戰(zhàn)(DA0層封裝)谎脯;索引,操作符$set,$lt,$gt,$push,$pull等
  • mongoose:ODM(把對(duì)象和數(shù)據(jù)庫(kù)模型綁定在一起持寄,不用直接操作數(shù)據(jù)庫(kù),只需要操作對(duì)象娱俺,對(duì)象自動(dòng)到數(shù)據(jù)庫(kù)中持久)稍味;

以上也就是整個(gè)node的一個(gè)流程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荠卷,一起剝皮案震驚了整個(gè)濱河市模庐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌油宜,老刑警劉巖掂碱,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異慎冤,居然都是意外死亡疼燥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)蚁堤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)醉者,“玉大人,你說(shuō)我怎么就攤上這事∏思矗” “怎么了立磁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)剥槐。 經(jīng)常有香客問(wèn)我唱歧,道長(zhǎng),這世上最難降的妖魔是什么粒竖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任颅崩,我火速辦了婚禮,結(jié)果婚禮上温圆,老公的妹妹穿的比我還像新娘挨摸。我一直安慰自己,他們只是感情好岁歉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布得运。 她就那樣靜靜地躺著,像睡著了一般锅移。 火紅的嫁衣襯著肌膚如雪熔掺。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,610評(píng)論 1 305
  • 那天非剃,我揣著相機(jī)與錄音置逻,去河邊找鬼。 笑死备绽,一個(gè)胖子當(dāng)著我的面吹牛券坞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肺素,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼恨锚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了倍靡?” 一聲冷哼從身側(cè)響起猴伶,我...
    開(kāi)封第一講書(shū)人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塌西,沒(méi)想到半個(gè)月后他挎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捡需,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年办桨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片站辉。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崔挖,死狀恐怖贸街,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狸相,我是刑警寧澤薛匪,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站脓鹃,受9級(jí)特大地震影響逸尖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瘸右,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一娇跟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧太颤,春花似錦苞俘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至做裙,卻和暖如春岗憋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锚贱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工仔戈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拧廊。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓监徘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吧碾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凰盔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容