NodeJS中使用Mongoose实现对MongoDB的增删查改操作

在后端开发中,增删查改是最常规的操作,而在用node框架express或koa开发后端时,经常搭配mongodb数据库,这篇文章就是教大家使用mongoose插件实现在node中对mongodb的增删查改操作

1.首先在相应路由中是引入相应的模型

const articleModel = require('../db/model/article')

我这里引入了一个文章模块,定义的Schema也比较简单,就titlecontent

2.增加文章路由接口

router.post('/add', (req, res) => {
  const {title, content} = req.body //通过解构赋值获取前端传值
  if (title && content) { // 判断是值是否都为真,否则走else返回参数错误
    articleModel.create({title, content}, (err, data) => { // 使用Model.create执行新增操作
      if (err) { // 如果函数回调报错,返回添加错误
        res.send({
          code: '111111',
          msg: '添加错误'
        })
      } else { // 添加成功,返回添加成功
        res.send({
          code: '000000',
          msg: '添加成功'
        })
      }
    })
  } else { //else返回参数错误
    res.send({
      code: '111111',
      msg: '参数错误',
    })
  }
})

3.查询文章路由接口

router.get('/list', (req, res) => {
  const {_id, title, content} = req.query // 解构赋值获取传参数据
  const pageSize = Number(req.query.pageSize) || 5 // 获取pageSize(每页条数)传参,不传默认为5
  const currentPage = Number(req.query.currentPage) || 1 // 获取currentPage(当前页)传参,不传默认为1
  const findInfo = { // 查询参数信息设置,用过正则表达式实现模糊查询title和content
    title: {$regex: new RegExp(title)},
    content: {$regex: new RegExp(content)}
  }
  if (_id) { // 如果传参有_id,具体查询的_id,不传,则默认查全部
    findInfo._id = _id
  }
  articleModel.find(findInfo)
    .limit(pageSize) // 查询条数
    .skip((currentPage - 1) * pageSize) // 跳过条数
    .exec((err, data) => { // 用exec来拼接回调,实现复杂查询
      articleModel.count((findInfo), (err2, count) => { // 查询成功的情况下,再查询下总条数
        if (err || err2) { // 如果有错误就返回错误
          res.send({
            code: '111111',
            msg: '查询错误'
          })
        } else { // 无报错的情况下,返回数据和每页条数,当前页及总条数
          res.send({
            code: '000000',
            msg: '查询成功',
            data: {
              result: data,
              pageSize,
              currentPage,
              total: count
            }
          })
        }
      })
    })
})

4.修改文章路由接口

router.post('/update', (req, res) => {
  const {_id, title, content} = req.body
  const updateInfo = {}
  if (title) {
    updateInfo.title = title
  }
  if (content) {
    updateInfo.content = content
  }
  if (_id && (title || content)) {
    articleModel.updateOne({_id}, updateInfo, (err, data) => {
      if (err) {
        res.send({
          code: '111112',
          msg: '更新失败'
        })
      } else {
        res.send({
          code: '000000',
          msg: '更新成功'
        })
      }
    })
  } else {
    res.send({
      code: '111111',
      msg: '参数错误'
    })
  }
})

5.删除文章路由接口

router.post('/del', (req, res) => {
  const {_id} = req.body
  if (_id) {
    articleModel.remove({_id}, (err, data) => {
      if (err) {
        res.send({
          code: '111112',
          msg: '删除失败'
        })
      } else {
        res.send({
          code: '000000',
          msg: '删除成功'
        })
      }
    })
  } else {
    res.send({
      code: '111111',
      msg: '参数错误'
    })
  }
})

到此,在node中使用mongoose对mongodb常规增删查改就已完成~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 安装依赖 安装`express`、`mongoose`、`body-parser`和`cors`: ``` npm install express mongoose body-parser cors --save ``` 2. 连接数据库 在`app.js`连接数据库: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const cors = require('cors'); const app = express(); // 连接数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, '连接错误:')); db.once('open', function() { console.log('连接成功'); }); app.use(bodyParser.json()); app.use(cors()); app.listen(3000, () => console.log('服务器已启动')); ``` 3. 定义模型 在`models`文件夹下创建`user.js`文件,定义用户模型: ```javascript const mongoose = require('mongoose'); const userSchema = new mongoose.Schema({ name: String, age: Number, gender: String, }); const User = mongoose.model('User', userSchema); module.exports = User; ``` 4. 增加数据 在`app.js`增加路由,实现增加用户功能: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const cors = require('cors'); const User = require('./models/user'); const app = express(); // 连接数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, '连接错误:')); db.once('open', function() { console.log('连接成功'); }); app.use(bodyParser.json()); app.use(cors()); // 增加用户 app.post('/users', (req, res) => { const user = new User({ name: req.body.name, age: req.body.age, gender: req.body.gender, }); user.save((err, user) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(user); } }); }); app.listen(3000, () => console.log('服务器已启动')); ``` 5. 查询数据 在`app.js`增加路由,实现查询用户功能: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const cors = require('cors'); const User = require('./models/user'); const app = express(); // 连接数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, '连接错误:')); db.once('open', function() { console.log('连接成功'); }); app.use(bodyParser.json()); app.use(cors()); // 增加用户 app.post('/users', (req, res) => { const user = new User({ name: req.body.name, age: req.body.age, gender: req.body.gender, }); user.save((err, user) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(user); } }); }); // 查询用户 app.get('/users', (req, res) => { User.find((err, users) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(users); } }); }); app.listen(3000, () => console.log('服务器已启动')); ``` 6. 更新数据 在`app.js`增加路由,实现更新用户功能: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const cors = require('cors'); const User = require('./models/user'); const app = express(); // 连接数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, '连接错误:')); db.once('open', function() { console.log('连接成功'); }); app.use(bodyParser.json()); app.use(cors()); // 增加用户 app.post('/users', (req, res) => { const user = new User({ name: req.body.name, age: req.body.age, gender: req.body.gender, }); user.save((err, user) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(user); } }); }); // 查询用户 app.get('/users', (req, res) => { User.find((err, users) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(users); } }); }); // 更新用户 app.put('/users/:id', (req, res) => { User.findByIdAndUpdate(req.params.id, { $set: { name: req.body.name, age: req.body.age, gender: req.body.gender, }, }, { new: true }, (err, user) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(user);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JK凯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值