准备工作
在robo中创建自己的接口
点击create
点击save保存
之后双击你建好的接口进入
在new Connection上右键 点击create Database创建数据库,起名字
在你新创建的数据库里有一个Collections文件夹,右键他点击 Create Collections创建一个新接口
建好之后是这样的
之后创建express项目
express-e
npm install
这里要安装mongodb
npm install mongodb
之后在页面中引入MongoDB
var express = require('express');
var router = express.Router();
var mc=require('mongodb').MongoClient \*引入MongoDB */
var url='mongodb://localhost:27017/test'
\*设置接口的路径,27017是MongoDB的地址,后边test是我创建的数据库名字*/
引入完成后就可以对接口数据进行增删改查了
var express = require('express');
var router = express.Router();
var mc=require('mongodb').MongoClient \*引入MongoDB */
var url='mongodb://localhost:27017/test'
\*设置数据库的路径,27017是MongoDB的地址,后边test是我创建的数据库名字*/
router.get('/index', function(req, res, next) {
mc.connect(url,function(err,db){
if (err) throw err
console.log('已创建')
res.send({msg:'成功'})
})
});
这里说两个重点
mc.connect(url,function(err,db){
1.mc.connect()
作用:连接数据库
2.connect()方法中第一个值为数据库路径,后边是回调函数
回调函数中的2个参数,第一个参数代表错误回调,第二个db代表了函数中的所有数据,主要使用的是db.db(‘test’)来定位我们写好的数据库test后边会用到
接下来开始,增删改查
添加单一数据
html部分代码:
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<form action="/add" method="post">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit" value="提交">
</form>
</body>
</html>
js部分代码:
router.post('/add',function(req,res){
mc.connect(url,function(err,db){
if(err){
console.log(err)
console.log("出错")
return
}else{
var dbs=db.db('test') /* 定位到数据库test */
dbs.collection('list').insertOne(req.body,function(error,data){
/* dbs.collection('list') 作用是:定位到接口list
insertOne()方法用来添加单一数据到list接口中,
方法中第一个值为要添加的数据,第二个为回调函数,函数的两个参数第一个为err,第二个为添加的数据*/
if(error){
console.log('error')
return
}else{
console.log('插入成功')
}
res.send(data)
})
}
})
})
重点:
0.req.body代表了post方法中前台页面传过来的数据
1. insertOne()方法,添加单一数据到指定接口中
2. insertOne()方法中,第一项是你添加的数据的内容,第二项是回调函数
3. insertOne()方法回调函数中的参数(err,data),err是错误回调,data是你添加的数据内容
4. db.db(‘test’) ,用来定位到我创建的test数据库
5. dbs.collection(‘list’) 用来定位到我创建的接口list
添加多条数据
router.get('/lists', function(req, res, next) {
mc.connect(url,function(err,db){
if (err) {
// console.log("出错了")
return
}else{
var dbs=db.db('test')
var arr=[{name:'wz', age:'18'},{name:'zw', age:'28'},{name:'wwz', age:'182'}]
dbs.collection('list').insertMany(arr,function(error,datas){
if(error){
res.send('错误')
}else{
res.send('添加成功')
}
})
}
})
});
添加多条数据使用方法insertMany()
查找数据
html代码:
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<form action="/add" method="post">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit" value="提交">
</form>
</body>
</html>
js代码:
router.post('/add',function(req,res){
mc.connect(url,function(err,db){
if(err){
console.log(err)
console.log("出错")
return
}else{
var dbs=db.db('test')
dbs.collection('list').find(req.body).toArray(function(error,result){
if(error){
console.log(req.body)
console.log('查询失败')
res.send('查询失败')
}else{
if(result==''){
console.log(req.body)
res.send('查无此人')
}else{
res.send(result)
}
}
})
}
})
})
重点:
- 查找接口数据中是否有此数据用 find()方法
- find()里边是要寻找的数据
- find()后边跟了一个.toArray(),目的是让查找之后返回的值是以数组的形式返回
- toArray()的回调函数的第二个参数就是返回的值
修改单一数据
router.post('/up',function(req,res){
mc.connect(url,{useNewUrlParser:true},function(err,db){
if(err){
console.log(err)
}else{
var dbs=db.db('test')
console.log(req.body)
/* 我用的post方法,所以下边的{name:'wz'}应该是req.body,还有个html页面,为了方便理解,下边写成了{name:'wz'} */
dbs.collection('list').updateOne({name:'wz'},{$set:{age:'23133'}},function(error,data){
if(error){
throw error
}else{
res.send(data)
}
})
}
})
})
重点:
- updateOne方法用来修改单一数据
- updataOne()格式,以上边代码为例,第一项:寻找字段为
{name:'wz'}
的字段,第二项:将该字段中的age字段的内容修改为23133,第三项:回调函数 - 第二项的格式必须为:
{$set:{age:'23133'}}
,必须花括号包起来,里边$set:
也是固定的 - 因为是单一修改数据,所以如果有多个
{name:'wz'}
,他会修改第一个里边的数据,其他不会变
修改多条数据
router.post('/up',function(req,res){
mc.connect(url,{useNewUrlParser:true},function(err,db){
if(err){
console.log(err)
}else{
var dbs=db.db('test')
console.log(req.body)
/* 我用的post方法,所以下边的{name:'wz'}应该是req.body,还有个html页面,为了方便理解,下边写成了{name:'wz'} */
dbs.collection('list').updateMany({name:'wz'},{$set:{age:'23133'}},function(error,data){
if(error){
throw error
}else{
res.send(data)
}
})
}
})
})
重点:
- updateMany方法用来修改多条数据
- 用updataMany()就可以同时修改所有的字段为
{name:'wz'}
的,将他们的age字段改为23133
删除单/多条数据
router.post('/del',function(req,res){
mc.connect(url,{useNewUrlParser:true},function(err,db){
if(err){
console.log(err)
}else{
var dbs=db.db('test')
console.log(req.body)
/* 我用的post方法,所以下边的{name:'wz'}应该是req.body,还有个html页面,为了方便理解,下边写成了{name:'wz'} */
dbs.collection('list').deleteOne({name:'wz'},function(error,data){
if(error){
throw error
}else{
res.send(data)
}
})
}
})
})
重点:
- deleteONE()删除单条数据,有多条相同名字数据删除第一条
- deleteMany()删除多条数据
- deleteOne({name:‘wz’},function(){}),方法中第一项为寻找该字段{name:‘wz’},第二项回调函数