您的位置:首页 > 数据库 > Mongodb

nodejs操作mongodb数据库(转载)

2017-08-14 23:34 609 查看
转自:http://blog.csdn.net/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.新启一个服务器

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:

[html] view
plain copy

<!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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: