转自: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:
- //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>