nodejs操作mongodb資料庫
又從頭捋了一遍這個案例,迷迷糊糊終於開點竅了,雖然寫的很簡單,也很low,但是剛起步,再接再厲。
第一步:安裝node環境,配置全域性變數。
第二步:安裝mongodb,也有一些視覺化工具,喜歡命令列操作的也可以不用,我沒用也就不介紹了。
第三步:新建一個目錄存放資料 隨便放在哪個盤 (md 檔名),也可以右鍵新建,我的是d:data
第四步:開啟mongodb,cmd切盤到mongodb的安裝目錄bin下,C:\Program Files\MongoDB\Server\3.4\bin這是我的目錄,然後mongod -dbpath d:data,位址列輸入http://127.0.0.1:27017/,這個埠是預設的,也可以修改,成功後在頁面上會看到
It looks like you are trying to access MongoDB over HTTP on the native driver port.
第五步:學習一些mongodb的基本命令,會建立查詢就可以了,cmd切盤到mongodb的安裝目錄bin下,命令列輸入mongo,在這裡面可以對資料庫進行操作,也可以執行一些計算
第六步:建立一個數據庫use myData,db,然後db.myData.find(),檢視我們建立的資料庫,什麼都沒有,可以先插入一個數據,db.myData.insert({"username":"susu"}),檢視所有的資料庫:show dbs
到這裡對於資料庫瞭解這些就可以了,重點是我們如何用nodejs去操作資料庫,然後響應前端的一些操作,也就是提供介面。之前有寫過如何通過node開啟一個本地伺服器,現在用到了,這裡用到了querystring,上程式碼:
server.js:
//1.新啟一個伺服器 var http=require('http'); var url=require('url'); //querystring將指定的字串轉換為json物件 //qs.parse(); var qs=require('querystring'); //建立服務 var getUser=require('./db.js')[0]; var addUser=require('./db.js')[1]; var deleted=require('./db.js')[2]; var change=require('./db.js')[3]; http.createServer(function(request,response){ response.writeHead('200',{'Content-Type':'application/json;charset=utf-8','Access-Control-Allow-Origin':'*'}); //引入url模組 var _url = request.url; var _path = url.parse(_url).pathname; switch(_path){ case "/register": var _data=""; //獲取post提交的資料 //監聽data,有資料,回撥函式就會出現值 request.addListener('data',function(data){ _data+=data;//目前每次拿到的data都是單個字元 //得到完整字串 }); //資料接收完畢 request.addListener('end',function(){ var ops=qs.parse(_data); var userops = {"userName":ops.userName}; var message={}; //定義返給前端的資訊 getUser(userops,function(res){ //userops是前端傳過來的引數(根據這個引數來資料庫中查詢) if(res.length!==0){ //查詢到了這個使用者名稱(不能再註冊) message.code="00000"; message.status = "使用者名稱已存在"; }else{ //查詢不到,可以註冊 message.status = "註冊成功"; message.code="10000"; //增加進資料庫(這個地方邏輯有點錯誤,還沒想到比較好的解決辦法,一般不會影響) addUser(ops,function(ress){ if(ress.length!==0){ console.log("成功") }else{ console.log("失敗") } }) } response.write(JSON.stringify(message)); response.end(); }) }); break; case "/login": var _data=""; //獲取post提交的資料 //監聽data,有資料,回撥函式就會出現值 request.addListener('data',function(data){ _data+=data;//目前每次拿到的data都是單個字元 //得到完整字串 }); //資料接收完畢 request.addListener('end',function(){ var ops=qs.parse(_data); var message={}; //定義返給前端的資訊 getUser(ops,function(res){ //ops是前端傳過來的引數(如果不傳,返回出資料庫中所有資料) if(res.length!==0){ //通過getUser這個自定義函式去自動查詢資料庫中的資料 //只要用使用者名稱和密碼都正確res的長度才不為零,他是一個數組 message.code="10000"; message.status = "登陸成功"; }else{ message.code="00000"; message.status = "登陸失敗"; } response.write(JSON.stringify(message)); response.end(); }) }); break; case "/deleted": var _data=""; //獲取post提交的資料 //監聽data,有資料,回撥函式就會出現值 request.addListener('data',function(data){ _data+=data;//目前每次拿到的data都是單個字元 //得到完整字串 }); //資料接收完畢 request.addListener('end',function(){ var ops=qs.parse(_data); var message={}; //定義返給前端的資訊 deleted(ops,function(res){ console.log(res) response.write(JSON.stringify(message)); response.end(); }) }); break; case "/change": var _data=""; //獲取post提交的資料 //監聽data,有資料,回撥函式就會出現值 request.addListener('data',function(data){ _data+=data;//目前每次拿到的data都是單個字元 //得到完整字串 }); //資料接收完畢 request.addListener('end',function(){ var ops=qs.parse(_data); var userOld = {"userName":ops.userName}; var usernew = {$set:{"userName":ops.passWord}}; var userops = {"userName":ops.passWord}; console.log(userops) var message={}; //定義返給前端的資訊 getUser(userops,function(res){ //userops是前端傳過來的引數(根據這個引數來資料庫中查詢) if(res.length!==0){ //查詢到了這個使用者名稱(不能再註冊) message.code="00000"; message.status = "使用者名稱已存在"; }else{ //查詢不到,可以註冊 message.status = "修改成功"; message.code="10000"; //增加進資料庫(這個地方邏輯有點錯誤,還沒想到比較好的解決辦法,一般不會影響) change(userOld,usernew,function(ress){ if(ress.length!==0){ console.log("成功") }else{ console.log("失敗") } }) } response.write(JSON.stringify(message)); response.end(); }) }); break; } }).listen(3080); //監聽的埠 然後method.js: //查詢使用者是否存在(登入) var getUser=function(options,callback){ //引入支援node訪問mongodb外掛 var mongodb=require('mongodb'); //獲取與資料庫伺服器的連線 var server=new mongodb.Server('127.0.0.1',27017,{auto_connection:true}); //通過連接獲取資料庫例項 //mongodb.Db('資料庫名稱',獲取與資料庫連線物件,安全策略) var appdb=new mongodb.Db('myData',server,{safe:true}); //open 是否發生錯誤,例項 appdb.open(function(err,appdb){ if(!err){ //進行下一步操作 開啟儲存資料的集合 //collection 資料庫名稱 安全策略 回撥函式 appdb.collection('dbdata',{safe:true},function(err,collection){ if(!err){ //查詢 collection.find(options).toArray(function(err,doc){ console.log(doc+"db1") if(!err){ console.log(doc+"db2") callback(doc); } }); } }) } }) } //增加使用者(註冊) var addUser = function(options,callback){ //引入支援node訪問mongodb外掛 var mongodb=require('mongodb'); //獲取與資料庫伺服器的連線 var server=new mongodb.Server('127.0.0.1',27017,{auto_connection:true}); //通過連接獲取資料庫例項 //mongodb.Db('資料庫名稱',獲取與資料庫連線物件,安全策略) var appdb=new mongodb.Db('myData',server,{safe:true}); //open 是否發生錯誤,例項 appdb.open(function(err,appdb){ if(!err){ //進行下一步操作 開啟儲存資料的集合 //collection 資料庫名稱 安全策略 回撥函式 appdb.collection('dbdata',{safe:true},function(err,collection){ if(!err){ //增加 collection.insert(options,function(error, result){ if(error) { console.log('Error:'+ error); }else{ callback(result) } }); } //在collection裡面獲取資料,然後放到callback }) } }) } //刪除使用者(登出) var removeUser=function(options,callback){ //引入支援node訪問mongodb外掛 var mongodb=require('mongodb'); //獲取與資料庫伺服器的連線 var server=new mongodb.Server('127.0.0.1',27017,{auto_connection:true}); //通過連接獲取資料庫例項 //mongodb.Db('資料庫名稱',獲取與資料庫連線物件,安全策略) var appdb=new mongodb.Db('myData',server,{safe:true}); //open 是否發生錯誤,例項 appdb.open(function(err,appdb){ if(!err){ //進行下一步操作 開啟儲存資料的集合 //collection 資料庫名稱 安全策略 回撥函式 appdb.collection('dbdata',{safe:true},function(err,collection){ if(!err){ //刪除 collection.remove(options,function(error, result){ if(error) { console.log('Error:'+ error); }else{ callback(result) } }); } //在collection裡面獲取資料,然後放到callback }) } }) } //修改使用者(換密碼) var updateUser=function(options,updata,callback){ //引入支援node訪問mongodb外掛 var mongodb=require('mongodb'); //獲取與資料庫伺服器的連線 var server=new mongodb.Server('127.0.0.1',27017,{auto_connection:true}); //通過連接獲取資料庫例項 //mongodb.Db('資料庫名稱',獲取與資料庫連線物件,安全策略) var appdb=new mongodb.Db('myData',server,{safe:true}); //open 是否發生錯誤,例項 appdb.open(function(err,appdb){ if(!err){ //進行下一步操作 開啟儲存資料的集合 //collection 資料庫名稱 安全策略 回撥函式 appdb.collection('dbdata',{safe:true},function(err,collection){ if(!err){ //修改 collection.update(options,updata,function(error, result){ if(error) { console.log('Error:'+ error); }else{ console.log(result.result.n); } }); } //在collection裡面獲取資料,然後放到callback }) } }) }
module.exports=[getUser,addUser,removeUser,updateUser]; //暴露出去,在server.js中呼叫
這個檔案裡面主要是一些對資料庫進行操作的方法,實現了基本的增刪改查,server.js裡面主要是寫的一些介面。cmd切盤到本專案目錄下,然後node server.js開啟伺服器就可以了。
html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>mongodb</title>
<script type="text/javascript" src="jquery-2.1.0.js" ></script>
</head>
<style>
*{margin:0;padding: 0;}
body{background: #222;}
</style>
<body>
<!--登入-->
<div style="width:400px;padding:15px 0;text-align:center;color:#DDDDDD;height:280px;border: 3px solid #fff;border-radius:8px;margin: 0 auto;margin-top: 220px;">
名稱:<input style="height:28px;margin:15px 0;" type = "text" class="userName" value = ""/></br>
密碼:<input style="height:28px;margin:15px 0;" type = "password" class = "passWord" value = ""/></br>
<input type = "submit" style="height:28px;margin:15px 0;width:100px;background: bisque;" class="submit" value = "註冊"/>
</div>
</body>
</html>
<script>
$(".submit").on("click",function(){
var userName = $(".userName").val();
var passWord = $(".passWord").val();
var data = {};
data.userName = userName;
data.passWord = passWord;
(var url = "http://127.0.0.1:3080/register"
var url = "http://127.0.0.1:3080/login"
var url = "http://127.0.0.1:3080/deleted"
var url = "http://127.0.0.1:3080/change")
//上面這是四個介面,每次呼叫一個就可以了
$.post(url,data,function(data){
console.log(data)
})
});
</script>
到這裡差不多算是做一個全棧了,很簡單,但是這算是一個起步,再深入學習一下,這裡面註冊個修改邏輯有待改善,後期會找出一個更完美的方法,再接再勵!