使用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
查询成分列表(不分页)
新增成分
查询成分列表(分页)
删除成分
修改成分