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数据库。