相信不少人對(duì)于LAMP的技術(shù)棧感覺到很熟悉,現(xiàn)在Nodejs的流行框架MEAN也漸入人心侵佃,這里的M可以指的是MySQL麻昼,MariaDB,也可以是MongoDB這種NoSQL數(shù)據(jù)庫馋辈,廣告說巧克力和下雨天更配喲抚芦,Nodejs和MogoDB搭配會(huì)更好,就像PHP和Apache的密切關(guān)系迈螟。這里選擇的是MongoDB叉抡,MongoDB的數(shù)據(jù)庫操作有MonngoDB官方的原生驅(qū)動(dòng),這里會(huì)有所偏向更簡單易記答毫,方便操作的Mongoose這種orm褥民,下面是參考了諸多的論壇的帖子,總結(jié)了一段DEMO洗搂。博主已經(jīng)測試過能夠使用消返。為方便使用也為了以后便于查閱载弄。
//引入mongoose第三方模塊
var mongoose=require('mongoose');
//沒有mongoose.Promise=global.Promise會(huì)出現(xiàn)錯(cuò)誤,意思就是mongoose自帶的promise過期了
//然后需要v8引擎的promise
mongoose.Promise=global.Promise;
// 調(diào)試模式是mongoose提供的一個(gè)非常實(shí)用的功能撵颊,用于查看mongoose模塊對(duì)mongodb
// 操作的日志宇攻,一般開發(fā)時(shí)會(huì)打開此功能,以便更好的了解和優(yōu)化對(duì)mongodb的操作
mongoose.set('debug',true);
//node連接數(shù)據(jù)庫
//一般默認(rèn)沒有user和password
var db=mongoose.connect('mongodb://localhost:/MyDB');
db.connection.on("error",function(error){
console.log("數(shù)據(jù)庫連接失敗:"+error);
});
db.connection.on("open",function(){
console.log("數(shù)據(jù)庫連接成功");
});
var Schema=mongoose.Schema;
//定義模式Student_Schema
//{versionKey:false}是否建立文檔的版本
var Student_Schema=new Schema({
name:String,
id:Number,
phone:String,
date:Date
},{
versionKey:false
});
//定義模型Student,注意數(shù)據(jù)庫存的是students
var Student=mongoose.model("Student",Student_Schema);
//實(shí)體的實(shí)例化
var kiwis=new Student({
name:"kiwis",
id:123,
phone:"12344556661",
date:Date.now()
});
//save()方法保存document倡勇,如果mongodb里面沒有逞刷,則會(huì)自動(dòng)創(chuàng)建
kiwis.save(function(error){});
//CURD操作方法
//{}是取得所有的文檔,第一參數(shù)定義條件妻熊,第二參數(shù)是回調(diào)函數(shù)夸浅,docs是返回的查找結(jié)果,結(jié)果形式是一個(gè)json數(shù)據(jù)數(shù)組{}
//Model.findById(id,[projection],[options],[callbacck]);
//Model.findOne([conditions],[projection],[options],[callback]);
Student.find({},function(err,docs){});
//update();第一參數(shù)是條件扔役,第二參數(shù)是修改的內(nèi)容
kiwis.update({name:"kiwis"},{id:456,phone:"12345678910"},function(error){});
//remove()
kiwis.remove({
name:"kiwis"
},function(error){
console.log(error);
});