nodejs操作mongodb数据库

    xiaoxiao2021-03-25  123

    又从头捋了一遍这个案例,迷迷糊糊终于开点窍了,虽然写的很简单,也很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>

    到这里差不多算是做一个全栈了,很简单,但是这算是一个起步,再深入学习一下,这里面注册个修改逻辑有待改善,后期会找出一个更完美的方法,再接再励!

    转载请注明原文地址: https://ju.6miu.com/read-24407.html

    最新回复(0)