聲明: 當查詢到數據庫數據后,對數據庫數據進行遍歷,可以采用toArray()函數,具體實現可以看第六點
1、本地安裝mongodb
安裝包:https://www.mongodb.com/download-center/community
2、npm安裝mongodb模塊
npm install mongodb --save-dev
npm install ejs --save-dev
3、創建express-route路由模塊文件

var url=require('url'); //封裝方法改變res 綁定res.send() function changeRes(res){ res.send=function(data){ res.writeHead(200,{"Content-Type":"text/html;charset='utf-8'"}); res.end(data); } } //暴露的模塊 var Server=function(){ var G=this; /*全局變量*/ //處理get和post請求 this._get={}; this._post={}; var app=function(req,res){ changeRes(res); //獲取路由 var pathname=url.parse(req.url).pathname; if(!pathname.endsWith('/')){ pathname=pathname+'/'; } //獲取請求的方式 get post var method=req.method.toLowerCase(); if(G['_'+method][pathname]){ if(method=='post'){ /*執行post請求*/ var postStr=''; req.on('data',function(chunk){ postStr+=chunk; }) req.on('end',function(err,chunk) { req.body=postStr; /*表示拿到post的值*/ G['_'+method][pathname](req,res); /*執行方法*/ }) }else{ /*執行get請求*/ G['_'+method][pathname](req,res); /*執行方法*/ } }else{ res.end('no router'); } } app.get=function(string,callback){ if(!string.endsWith('/')){ string=string+'/'; } if(!string.startsWith('/')){ string='/'+string; } // /login/ G._get[string]=callback; } app.post=function(string,callback){ if(!string.endsWith('/')){ string=string+'/'; } if(!string.startsWith('/')){ string='/'+string; } G._post[string]=callback; } return app; } module.exports=Server();
4、連接並添加數據Demo
var http = require('http'); var app = require('./module/express-route'); var ejs = require('ejs'); /*mongodb連接設置*/ const MongoClient = require('mongodb').MongoClient; const dburl = 'mongodb://localhost:27017'; const dbName = 'test'; const client = new MongoClient(dburl); /**/ http.createServer(app).listen('8001'); /** * 添加數據 */ app.get('/add',function (req,res) { client.connect(function(err) { if(err){//連接失敗 console.log("Connected fail to server"); } //連接成功 console.log("Connected successfully to server"); const db = client.db(dbName); db.collection('shop').insertOne({'name':"name-yangwenjie","age":28},function (error,result) { if(error){ console.log("insert database faile"); } console.log("insert database successfully"); client.close(); }) }); })
5、nodejs操作mongdb增刪改查操作並聯合ejs聯合使用
/** * 添加數據 */ app.get('/add',function (req,res) { client.connect(function(err) { if(err){//連接失敗 console.log("Connected fail to server"); } //連接成功 console.log("Connected successfully to server"); const db = client.db(dbName); db.collection('shop').insertOne({'name':"name-yangwenjie","age":28},function (error,result) { if(error){ console.log("insert database faile"); } console.log("insert database successfully"); client.close(); }) }); }); /** * 查找數據和EJS一起使用 */ app.get('/find',function (req,res) { var list = []; client.connect(function (err) { if (err) {//連接失敗 console.log("Connected fail to server"); } //連接成功 console.log("Connected successfully to server"); const db = client.db(dbName); var result = db.collection('shop').find({ "age" : 38}); result.each(function (err,data) { if(err){ console.log(err); } else { if(data!=null){ list.push(data); console.log("你好:"+list[0].name); ejs.renderFile('練習/views/index.ejs',{list:list},function (err,data) { if(err){ console.log(err); return false; } console.log(data); res.send(data); }); }else {//循環完成 console.log("循環完成"+list); } } }) }); }); /** * 刪除文檔 */ app.get('delete',function (req,res) { client.connect(function (err) { if(err){ console.log("Connected fail to server"); } console.log("Connected successfully to server"); const db = client.db(dbName); //文檔和過濾條件 db.collection('shop').deleteOne({"name":"name-yangwenjie"},function (err,result) { if(err){ console.log("delete fail to server"); } console.log("delete successfully to server"); console.log(result); }) }) }) /** * 更新文檔數據 */ app.get('/update',function (req,res) { client.connect(function (err) { if(err){ console.log("連接數據庫失敗!"); } console.log("連接數據庫成功!"); var db = client.db(dbName); db.collection('shop').updateOne({"name":"yangwenjie"},{$set:{"age":38}},function (err,result) { if(err){ console.log("更新數據失敗"); } console.log("更新數據成功!"); console.log(result); }) }) })
6、遍歷查找的數據建議采用toArray()進行遍歷
var result = db.collection('user').find(req.body); result.toArray(function (err,data) { //console.log(data.username); //console.log(data.length); if(data.length>0){ //登陸成功 req.session.userinfo=data[0]; //res.render('product'); res.redirect('/product'); }else { //登陸失敗 res.send("<script>alert('登陸失敗');location.href='/login'</script>") } })
注意:mongodb配置代碼
const MongoClient = require('mongodb').MongoClient; //引用mongodb const dburl = 'mongodb://localhost:27017'; //數據庫url const dbName = 'test'; //數據庫名 const client = new MongoClient(dburl); //創建一個客戶端 client.connect(function(err) { if(err){ console.log("Connected fail to server"); } console.log("Connected successfully to server"); const db = client.db(dbName); //添加數據庫操作代碼 client.close(); });
具體可以參考mongodb關於nodejs的官方文檔:http://mongodb.github.io/node-mongodb-native/3.1/quick-start/quick-start/