express+MongoDB+robo对接口数据进行增删改查

本文详细介绍了如何在Express项目中集成MongoDB,包括创建数据库、接口,以及实现数据的增删改查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

准备工作

在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)
         }
        }

      })
    }
  })
})

重点:

  1. 查找接口数据中是否有此数据用 find()方法
  2. find()里边是要寻找的数据
  3. find()后边跟了一个.toArray(),目的是让查找之后返回的值以数组的形式返回
  4. 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)
          }
      })
    }
  })
})

重点:

  1. updateOne方法用来修改单一数据
  2. updataOne()格式,以上边代码为例,第一项:寻找字段为{name:'wz'}的字段,第二项:将该字段中的age字段的内容修改为23133,第三项:回调函数
  3. 第二项的格式必须为:{$set:{age:'23133'}},必须花括号包起来,里边$set:也是固定的
  4. 因为是单一修改数据,所以如果有多个{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)
          }
      })
    }
  })
})

重点:

  1. updateMany方法用来修改多条数据
  2. 用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)
        }
      })
    }
  })
})

重点:

  1. deleteONE()删除单条数据,有多条相同名字数据删除第一条
  2. deleteMany()删除多条数据
  3. deleteOne({name:‘wz’},function(){}),方法中第一项为寻找该字段{name:‘wz’},第二项回调函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值