Mongoose

Mongoose是一個將JavaScript對象與數據庫產生關系的一個框架,object related model。操作對象,就是操作數據庫了;對象產生了,同時也持久化了。這個思路是Java三大框架SSHHibernate框架的思路。徹底改變了人們使用數據庫的方式。

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

//創建了一個模型。貓的模型。所有的貓,都有名字,是字符串?!邦悺?。
var Cat = mongoose.model('Cat', { name: String });
//實例化一只貓
var kitty = new Cat({ name: 'miaomiao' });
//調用這只貓的save方法,保存這只貓
kitty.save(function (err) {
    console.log('喵喵喵');
});

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

  • 使用mongosse的步驟

1、數據庫連接

var mongoose = require('mongoose');
//創建數據庫連接
var db=mongoose.createConnection('mongodb://127.0.0.1:27017/database');
//監聽open事件
db.once('open', function (callback) {
    console.log("數據庫成功連接");
});

2、定義模型

  • 創建一個schema結構。例如:創建一個student模型
var studentSchema = new mongoose.Schema({
    name     :  {type : String},
    age      :  {type : Number},
    sex      :  {type : String}
});

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

  • 創建了一個模型,就是學生模型,就是學生類。
//類是基于schema創建的。
var studentModel = db.model('Student', studentSchema);
  • 向外暴露方法
module.exports = studentModel;
附:ObjectId的獲取方法:
var ObjectId=require('mongoose').Types.ObjectId;

mongoose的操作基本上就是以上流程,對于前臺操作的時候就不用操作數據庫,只操作類,就可以做到對數據庫的CRUD

nodejs小結

  • nodejs特點:單線程,異步I/O,事件驅動;
  • 適合的程序:就是沒有太多計算,I/O比較多的業務;舉例:留言本,考試系統,論壇,圖片裁切服務器等
  • Nodejs原生模塊:http,fs,path,url;靜態服務,簡單路由;get,post請求;
  • 好用的第三方模塊:formidable,gm,express;
  • express:中間件,MVC建站,模版引擎ejs,靜態服務,簡單路由,get,post請求,md5加密,圖片上傳等;
  • 服務器的一些概念:Cookie(舉例:猜你喜歡,臨時存放在客戶電腦中;cookie-parser模塊),Session(隨機的密鑰,用express-session模塊);
  • mongodb:安裝,開機,導入數據,通過shell操作數據庫;mongovue可視化工具;nodejs做CRUD(增刪改查操作);實戰(DA0層封裝);索引,操作符$set,$lt,$gt,$push,$pull等
  • mongoose:ODM(把對象和數據庫模型綁定在一起,不用直接操作數據庫,只需要操作對象,對象自動到數據庫中持久);

以上也就是整個node的一個流程。

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

推薦閱讀更多精彩內容