Mongoose
是一個將JavaScript
對象與數據庫產生關系的一個框架,object related model
。操作對象,就是操作數據庫了;對象產生了,同時也持久化了。這個思路是Java三大框架SSH
中Hibernate
框架的思路。徹底改變了人們使用數據庫的方式。
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的一個流程。