Nodejs连接MongoDB

nodejs连接mongodb的关键指令:

写法一:

var MongoClient = require('mongodb').MongoClient;

var url = 'mongodb://localhost:27017/html5';

写法二:
var  mongodb = require("mongodb");
var server = new mongodb.Server("localhost",27017,{auto_reconnect:true});
var db = new mongodb.Db("html5",server,{safe:true})

下面建一个项目来详细实现二者的连接。

新建一个aaa的目录

npm init   初始化      会生成一个叫package.json依赖文件

npm i  mongodb@2 -D   安装上MongoDB的依赖

下面,创建一个server.js文件,实现nodejs和MongoDB数据库的连接

//引入MongoDB依赖到项目中
var  mongodb = require("mongodb");
//创建服务对象---数据库连接服务
var server = new mongodb.Server("localhost",27017,{auto_reconnect:true});
//创建数据库对象---数据库连接
var db = new mongodb.Db("html5",server,{safe:true})
//测试连接
db.open((err,database)=>{
	database.collection("user",(err,coll)=>{
		coll.find({}).toArray((err,data)=>{
			//此处得到的data就是数据库html5下集合名为user的所有文档
			console.log(data)
			database.close();
		})
	})
})

以上就是简单的一个连接,可以在小黑窗通过node server命令得到数据库集合里面的相关文档。当然,我们也可以在node服务器里面通过代码来操作数据库。需要先搭建node服务器。

下面是从数据库取到数据传到前端页面的一个操作(server.js文件):

var  mongodb = require("mongodb");
var  http = require("http");

var server = new mongodb.Server("localhost",27017,{auto_reconnect:true});
var db = new mongodb.Db("html5",server,{safe:true})

http.createServer((req,res)=>{
	res.writeHead(200,{"content-type":"text/html;charset=utf-8"})
	if(req.url!="/favicon.ico"){
		//测试连接
		db.open((err,database)=>{
			database.collection("user",(err,coll)=>{
				coll.find({}).toArray((err,data)=>{
					//此处data为[ { _id: 5b6a6b6f1eb90a3fac3e786b, name: 'a', age: 10 } ]数组格式的
//					console.log(data)
					//JSON.stringify() 方法用于将 JavaScript 值(通常为对象或数组)转换为 JSON 字符串。
					res.write(JSON.stringify(data));
		            res.end();
					database.close();
				})
			})
		})	
	}
}).listen(3000)

tips:今天在创建服务器的时候,出现了一个小失误,node server之后立马就结束了,用supervisor监听则一直“Starting child process with 'node server<br />Program node server exited with code 0”跳这两行代码,仔细检查发现是没有写listen监听。

实现完往前端传数据库数据之后,就是前端传入数据到node服务器后台,后台通过代码来操作MongoDB的文档数据了

<!--demo.html-->
<!--前端发起ajax请求,既可以得到后台数据,也可以发送数据到后台,此处是post提交数据到后台-->
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="../jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<input type="text" id="ipt"/>
		<button id="csj">传数据</button>
	</body>
		<script type="text/javascript">
			$("#csj").click(function(){
				$.ajax({
					type:"post",
					url:"http://localhost:3000",
					//传数据到后台
					data:{name:$("#ipt").val()},
					//发起get请求时候规定得到的数据类型
					//dataType:"json",
					success:function(data){
						//data是后台res.write写入的数据,可以在成功回调里面做一些处理,此处只在控制台打印出来
						console.log(data)
					}
				});
			})
		</script>
</html>

前端将数据传给后台之后,后台处理,可以利用得到的前端数据对数据库做相应的操作,此处以插入数据为例:

var  mongodb = require("mongodb");
var  http = require("http");
var querystring = require("querystring");

var server = new mongodb.Server("localhost",27017,{auto_reconnect:true});
var db = new mongodb.Db("html5",server,{safe:true})

var str="";
http.createServer((req,res)=>{
	res.writeHead(200,{"content-type":"text/html;charset=utf-8","Access-Control-Allow-Origin":"*"})
	if(req.url!="/favicon.ico"){
		
		//后台通过data事件接收前端数据,并在end事件中对得到的数据进行处理
	     req.on("data",(data)=>{
	     	str+=data;
	     })

	     req.on("end",()=>{
//	     	console.log(str)  //name=11=>转对象用querystring.parse,要用就需要导入依赖模块
	     	var info = querystring.parse(str);
	     	db.open((err,database)=>{
	     		database.collection("user",(err,coll)=>{
	     			coll.insert(info,()=>{
	     				str = ""
	     				//成功给前端返回的数据
	     				res.write("插入成功");
	     				res.end();
	     				database.close();
	     			})
	     		})
	     	})
	     })
	}
}).listen(3000)

以上,就实现了整个的前后端交互,包括去操作MongoDB数据库。

猜你喜欢

转载自blog.csdn.net/keep789/article/details/81511027