nodejs操作mongodb数据库(转载)

本文详细介绍使用Node.js和MongoDB实现用户注册、登录、修改密码及注销功能的具体步骤,包括环境搭建、数据库操作和前后端交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/susuzhe123/article/details/61203609

第一步:安装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:

[javascript]  view plain  copy
  1. //1.新启一个服务器  
  2. var http=require('http');  
  3. var url=require('url');  
  4. //querystring将指定的字符串转换为json对象  
  5. //qs.parse();  
  6. var qs=require('querystring');  
  7. //创建服务  
  8. var getUser=require('./db.js')[0];  
  9. var addUser=require('./db.js')[1];  
  10. var deleted=require('./db.js')[2];  
  11. var change=require('./db.js')[3];  
  12. http.createServer(function(request,response){  
  13. response.writeHead('200',{'Content-Type':'application/json;charset=utf-8','Access-Control-Allow-Origin':'*'});  
  14. //引入url模块  
  15. var _url = request.url;  
  16. var _path = url.parse(_url).pathname;  
  17. switch(_path){  
  18. case "/register":  
  19. var _data="";  
  20. //获取post提交的数据  
  21. //监听data,有数据,回调函数就会出现值  
  22. request.addListener('data',function(data){  
  23. _data+=data;//目前每次拿到的data都是单个字符  
  24. //得到完整字符串  
  25. });  
  26. //数据接收完毕  
  27. request.addListener('end',function(){  
  28. var ops=qs.parse(_data);  
  29. var userops = {"userName":ops.userName};  
  30. var message={}; //定义返给前端的信息  
  31. getUser(userops,function(res){  
  32. //userops是前端传过来的参数(根据这个参数来数据库中查找)  
  33. if(res.length!==0){ //查询到了这个用户名(不能再注册)  
  34. message.code="00000";  
  35. message.status = "用户名已存在";  
  36. }else{  
  37. //查询不到,可以注册  
  38. message.status = "注册成功";  
  39. message.code="10000";  
  40. //增加进数据库(这个地方逻辑有点错误,还没想到比较好的解决办法,一般不会影响)  
  41. addUser(ops,function(ress){  
  42. if(ress.length!==0){  
  43. console.log("成功")  
  44. }else{  
  45. console.log("失败")  
  46. }  
  47. })  
  48. }  
  49. response.write(JSON.stringify(message));  
  50. response.end();  
  51. })  
  52. });  
  53. break;  
  54. case "/login":  
  55. var _data="";  
  56. //获取post提交的数据  
  57. //监听data,有数据,回调函数就会出现值  
  58. request.addListener('data',function(data){  
  59. _data+=data;//目前每次拿到的data都是单个字符  
  60. //得到完整字符串  
  61. });  
  62. //数据接收完毕  
  63. request.addListener('end',function(){  
  64. var ops=qs.parse(_data);  
  65. var message={}; //定义返给前端的信息  
  66. getUser(ops,function(res){  
  67. //ops是前端传过来的参数(如果不传,返回出数据库中所有数据)  
  68. if(res.length!==0){  
  69. //通过getUser这个自定义函数去自动查找数据库中的数据  
  70. //只要用用户名和密码都正确res的长度才不为零,他是一个数组  
  71. message.code="10000";  
  72. message.status = "登陆成功";  
  73. }else{  
  74. message.code="00000";  
  75. message.status = "登陆失败";  
  76. }  
  77. response.write(JSON.stringify(message));  
  78. response.end();  
  79. })  
  80. });  
  81. break;  
  82. case "/deleted":  
  83. var _data="";  
  84. //获取post提交的数据  
  85. //监听data,有数据,回调函数就会出现值  
  86. request.addListener('data',function(data){  
  87. _data+=data;//目前每次拿到的data都是单个字符  
  88. //得到完整字符串  
  89. });  
  90. //数据接收完毕  
  91. request.addListener('end',function(){  
  92. var ops=qs.parse(_data);  
  93. var message={}; //定义返给前端的信息  
  94. deleted(ops,function(res){  
  95. console.log(res)  
  96. response.write(JSON.stringify(message));  
  97. response.end();  
  98. })  
  99. });  
  100. break;  
  101. case "/change":  
  102. var _data="";  
  103. //获取post提交的数据  
  104. //监听data,有数据,回调函数就会出现值  
  105. request.addListener('data',function(data){  
  106. _data+=data;//目前每次拿到的data都是单个字符  
  107. //得到完整字符串  
  108. });  
  109. //数据接收完毕  
  110. request.addListener('end',function(){  
  111. var ops=qs.parse(_data);  
  112. var userOld = {"userName":ops.userName};  
  113. var usernew = {$set:{"userName":ops.passWord}};  
  114. var userops = {"userName":ops.passWord};  
  115. console.log(userops)  
  116. var message={}; //定义返给前端的信息  
  117. getUser(userops,function(res){  
  118. //userops是前端传过来的参数(根据这个参数来数据库中查找)  
  119. if(res.length!==0){ //查询到了这个用户名(不能再注册)  
  120. message.code="00000";  
  121. message.status = "用户名已存在";  
  122. }else{  
  123. //查询不到,可以注册  
  124. message.status = "修改成功";  
  125. message.code="10000";  
  126. //增加进数据库(这个地方逻辑有点错误,还没想到比较好的解决办法,一般不会影响)  
  127. change(userOld,usernew,function(ress){  
  128. if(ress.length!==0){  
  129. console.log("成功")  
  130. }else{  
  131. console.log("失败")  
  132. }  
  133. })  
  134. }  
  135. response.write(JSON.stringify(message));  
  136. response.end();  
  137. })  
  138. });  
  139. break;  
  140. }  
  141. }).listen(3080); //监听的端口  
  142.   
  143. 然后method.js:  
  144. //查询用户是否存在(登录)  
  145. var getUser=function(options,callback){  
  146. //引入支持node访问mongodb插件  
  147. var mongodb=require('mongodb');  
  148. //获取与数据库服务器的连接  
  149. var server=new mongodb.Server('127.0.0.1',27017,{auto_connection:true});  
  150. //通过连接获取数据库实例  
  151. //mongodb.Db('数据库名称',获取与数据库连接对象,安全策略)  
  152. var appdb=new mongodb.Db('myData',server,{safe:true});  
  153. //open 是否发生错误,实例  
  154. appdb.open(function(err,appdb){  
  155. if(!err){  
  156. //进行下一步操作 打开存储数据的集合  
  157. //collection 数据库名称 安全策略 回调函数  
  158. appdb.collection('dbdata',{safe:true},function(err,collection){  
  159. if(!err){  
  160. //查找  
  161. collection.find(options).toArray(function(err,doc){  
  162. console.log(doc+"db1")  
  163. if(!err){  
  164. console.log(doc+"db2")  
  165. callback(doc);  
  166. }  
  167. });  
  168. }  
  169. })  
  170. }  
  171. })  
  172. }  
  173. //增加用户(注册)  
  174. var addUser = function(options,callback){  
  175. //引入支持node访问mongodb插件  
  176. var mongodb=require('mongodb');  
  177. //获取与数据库服务器的连接  
  178. var server=new mongodb.Server('127.0.0.1',27017,{auto_connection:true});  
  179. //通过连接获取数据库实例  
  180. //mongodb.Db('数据库名称',获取与数据库连接对象,安全策略)  
  181. var appdb=new mongodb.Db('myData',server,{safe:true});  
  182. //open 是否发生错误,实例  
  183. appdb.open(function(err,appdb){  
  184. if(!err){  
  185. //进行下一步操作 打开存储数据的集合  
  186. //collection 数据库名称 安全策略 回调函数  
  187. appdb.collection('dbdata',{safe:true},function(err,collection){  
  188. if(!err){  
  189. //增加  
  190. collection.insert(options,function(error, result){  
  191.        if(error)  
  192.        {  
  193.            console.log('Error:'+ error);  
  194.        }else{  
  195.            callback(result)  
  196.        }  
  197.    });  
  198. }  
  199. //在collection里面获取数据,然后放到callback  
  200. })  
  201. }  
  202. })  
  203. }  
  204. //删除用户(注销)  
  205. var removeUser=function(options,callback){  
  206. //引入支持node访问mongodb插件  
  207. var mongodb=require('mongodb');  
  208. //获取与数据库服务器的连接  
  209. var server=new mongodb.Server('127.0.0.1',27017,{auto_connection:true});  
  210. //通过连接获取数据库实例  
  211. //mongodb.Db('数据库名称',获取与数据库连接对象,安全策略)  
  212. var appdb=new mongodb.Db('myData',server,{safe:true});  
  213. //open 是否发生错误,实例  
  214. appdb.open(function(err,appdb){  
  215. if(!err){  
  216. //进行下一步操作 打开存储数据的集合  
  217. //collection 数据库名称 安全策略 回调函数  
  218. appdb.collection('dbdata',{safe:true},function(err,collection){  
  219. if(!err){  
  220. //删除  
  221. collection.remove(options,function(error, result){  
  222.        if(error)  
  223.        {  
  224.            console.log('Error:'+ error);  
  225.        }else{  
  226.            callback(result)  
  227.        }  
  228.    });  
  229. }  
  230. //在collection里面获取数据,然后放到callback  
  231. })  
  232. }  
  233. })  
  234. }  
  235. //修改用户(换密码)  
  236. var updateUser=function(options,updata,callback){  
  237. //引入支持node访问mongodb插件  
  238. var mongodb=require('mongodb');  
  239. //获取与数据库服务器的连接  
  240. var server=new mongodb.Server('127.0.0.1',27017,{auto_connection:true});  
  241. //通过连接获取数据库实例  
  242. //mongodb.Db('数据库名称',获取与数据库连接对象,安全策略)  
  243. var appdb=new mongodb.Db('myData',server,{safe:true});  
  244. //open 是否发生错误,实例  
  245. appdb.open(function(err,appdb){  
  246. if(!err){  
  247. //进行下一步操作 打开存储数据的集合  
  248. //collection 数据库名称 安全策略 回调函数  
  249. appdb.collection('dbdata',{safe:true},function(err,collection){  
  250. if(!err){  
  251. //修改  
  252. collection.update(options,updata,function(error, result){  
  253.        if(error)  
  254.        {  
  255.            console.log('Error:'+ error);  
  256.        }else{  
  257.   
  258.   
  259.            console.log(result.result.n);  
  260.        }  
  261.    });  
  262. }  
  263. //在collection里面获取数据,然后放到callback  
  264. })  
  265. }  
  266. })  
  267. }  


module.exports=[getUser,addUser,removeUser,updateUser];  //暴露出去,在server.js中调用

这个文件里面主要是一些对数据库进行操作的方法,实现了基本的增删改查,server.js里面主要是写的一些接口。cmd切盘到本项目目录下,然后node server.js开启服务器就可以了。

html:

[html]  view plain  copy
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta charset="UTF-8">  
  5. <title>mongodb</title>  
  6. <script type="text/javascript" src="jquery-2.1.0.js" ></script>  
  7. </head>  
  8. <style>  
  9. *{margin:0;padding: 0;}  
  10. body{background: #222;}  
  11. </style>  
  12. <body>  
  13. <!--登录-->  
  14. <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;">  
  15. 名称:<input style="height:28px;margin:15px 0;" type = "text" class="userName" value = ""/></br>  
  16. 密码:<input style="height:28px;margin:15px 0;" type = "password" class = "passWord" value = ""/></br>  
  17. <input type = "submit" style="height:28px;margin:15px 0;width:100px;background: bisque;" class="submit" value = "注册"/>  
  18. </div>  
  19. </body>  
  20. </html>  
  21. <script>  
  22. $(".submit").on("click",function(){  
  23. var userName = $(".userName").val();  
  24. var passWord = $(".passWord").val();  
  25. var data = {};  
  26. data.userName = userName;  
  27. data.passWord = passWord;  
  28. (var url = "http://127.0.0.1:3080/register"  
  29. var url = "http://127.0.0.1:3080/login"  
  30. var url = "http://127.0.0.1:3080/deleted"  
  31. var url = "http://127.0.0.1:3080/change")  
  32. //上面这是四个接口,每次调用一个就可以了  
  33. $.post(url,data,function(data){  
  34. console.log(data)  
  35. })  
  36. });  
  37. </script>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值