使用express连接MongoDB数据库编写基础的增、删、改、查、分页接口

使用express编写基础的增、删、改、查、分页接口

安装express-generator生成器

cnpm install -g express-generator

通过生成器创建项目

express peifang-server

切换至serverAPI目录

cd peifang-server

下载所需依赖

cnpm install 

运行项目

npm start

访问项目:在浏览器地址栏输入127.0.0.1:3000

单方事故都发给

开始编写接口

1. 在项目中安装mongoose

cnpm install -S mongoose@6.12.0

2. 在项目的根目录下新建config/index.js文件,用来存放数据库的相关配置信息

在这里插入图片描述

3. 在项目的根目录下新建db/mongoose.js文件夹,用来编写连接数据库的相关方法

//1, 引入mongoose
var mongoose = require("mongoose")
//导入 配置文件
const {DBHOST, DBPORT, DBNAME} = require('../config/config.js');
mongoose.set("strictQuery", true);
//2,连接MongoDB数据库
mongoose.connect(`mongodb://${DBHOST}:${DBPORT}/${DBNAME}`, { useNewUrlParser: true });
mongoose.connection.on('connected', function () {
  console.log('MongoDB connected success.');
});

mongoose.connection.on('error', function () {
  console.log('MongoDB connected fail.');
});

mongoose.connection.on('disconnected', function () {
  console.log('MongoDB connected disconnected.');
});
module.exports = mongoose;

在这里插入图片描述

4. 在项目的根目录下新建model文件夹,用来存放数据表

5. 在model文件夹下新建Part.js文件,编写mongodb的数据表结构如下

// 配方成分表
// 引入mongodb
const mongoose = require('../db/mongoose')
// 建立成分表
const PartSchema = new mongoose.Schema({
  id: String,
  name: { // 成分名称
    type: String,
    required: true
  },
  price: { // 单价
    type: Number,
    required: true
  },
  MJProportion: { // 净能MJ
    type: Number,
    required: true
  },
  proteinProportion: { // 可消化粗蛋白
    type: Number,
    required: true
  },
  calciumProportion: { // 钙
    type: Number,
    required: true
  },
  phosphorusProportion: { // 磷
    type: Number,
    required: true
  },
  createTime: { // 创建时间
    type: Date,
    default: Date.now
  },
})

PartSchema.index({id: 1});
// 建立配方成分数据库模型
module.exports = mongoose.model('Part', PartSchema)

在这里插入图片描述

6. 在routes目录下新建part.js文件,开始相关接口开发

let express = require('express');
let router = express.Router();
let Part = require('../model/Part');
let historyEntry = require('../controller/history')
/**
 * 查询所有成分列表
 */
router.get("/list", (req, res) => {
  Part.find({}, (err, data) => {
    if (err) {
      res.json({
        status: 404,
        msg: err.message
      });
    } else {
      res.json({
        status: 200,
        msg: '查询成功',
        list: data
      })
    }
  });
});

/**
 * 查询成分列表(分页)
 */
router.get("/listByPage", (req, res) => {
  const size = Number(req.query.size)
  const page = Number(req.query.page)
  Part.find().limit(Number(size)).skip((page - 1) * size).exec((err,data) => {
    if (err) {
      res.json({
        status: 404,
        msg: err.message
      });
    } else {
      res.json({
        status: 200,
        msg: '查询成功',
        list: data
      })
    }
  });
})

/**
 * 根据成分id查询成分详情
 */
router.get("/partInfo/:id", (req, res) => {
  const id = String(req.params.id)
  Part.findById(id, (err, data) => {
    if (err) {
      res.json({
        status: 404,
        msg: err.message
      });
    } else {
      res.json({
        status: 200,
        msg: '查询成功',
        list: data
      })
    }
  })
})
/**
 * 新增成分
 */
router.post("/addPart",  (req, res) => {
  const name = req.body.name
  Part.findOne({name: name}, (err, data) => {
    if (err) {
      res.json({
        status: 400,
        msg: "数据读取失败!"
      });
    } else {
      Part.create({...req.body}, (err1, data1) => {
          if (err1) {
            res.json({
              status: 400,
              msg: err.message
            });
          } else {
            res.json({
               status: 200,
               msg: '新增成功'
            })
          }
        })
    }
  })
})

/**
 * 删除成分
 */
router.delete("/deletePartById/:id", (req, res) => {
  const id = String(req.params.id)
  Part.findOne({_id: id}, (err, data) => {
    if (err) {
      res.json({
        status: 400,
        msg: "数据读取失败!"
      });
    } else {
      if (data) {
        res.json({
          status: 200,
          msg: '删除成功'
        })
      } else {
        res.json({
          status: 400,
          msg: "当前成分不存在!"
        });
      }
    }
  })
})

/**
 * 修改成分
 */
router.put("/updatePart/:id", (req, res) => {
  const _id = String(req.params.id)
  const { price, MJProportion, proteinProportion, calciumProportion, phosphorusProportion } = req.body
  Part.findOne({_id}, (err, data) => {
    if (err) {
      res.json({
        status: 400,
        msg: "数据读取失败!"
      });
    } else {
      if (data) {
        Part.updateOne({_id}, {
          price,
          MJProportion,
          proteinProportion,
          calciumProportion,
          phosphorusProportion
        }, (err1, data1) => {
          if (err1) {
            res.json({
              status: 400,
              msg: err.message
            });
          } else {
            res.json({
               status: 200,
               msg: '修改成功!'
             })
          }
        })
      } else {
        res.json({
          status: 400,
          msg: "当前成分不存在!"
        });
      }
    }
  })
})
module.exports = router;

7. 在app.js文件中注册路由信息

var partRouter = require('./routes/part');
app.use('/part', partRouter);

在这里插入图片描述

7. 在postman中调试接口:http://localhost:3000/part

查询成分列表(不分页)
在这里插入图片描述
新增成分
在这里插入图片描述
查询成分列表(分页)
在这里插入图片描述
删除成分
在这里插入图片描述
修改成分
在这里插入图片描述

项目源码地址

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值