Node.js使用express实现实现简单增删改查mongdb数据库内容
/**
* 数据添加
* @param {*} model 数据模型对象
* @param {*} params 添加数据对象
* @param {*} res 响应对象
*/
function add(model, params, res) {
model.create(params).then(result => {
// 添加数据库数据
if (result) {
res.json({
code: 200,
msg: "数据添加成功"
})
}
else {
res.json({
code: 300,
msg: "数据添加失败"
})
}
}).catch(err => {
res.json({
code: 400,
msg: "数据添加时报错:" + err
})
})
}
/**
* 数据更新
* @param {*} model 数据模型对象
* @param {*} where 查询条件对象
* @param {*} params 数据对象
* @param {*} res 响应对象
*/
function update(model, where, params, res) {
model.updateOne(where, params).then(result => {
// 数据更新where是查找的条件,params是替换的数据
if (result.n > 0) {
res.json({
code: 200,
msg: "数据修改成功"
})
}
else {
res.json({
code: 300,
msg: "数据修改失败"
})
}
})
.catch(err => {
res.json({
code: 400,
msg: "数据修改时出错:" + err
})
})
}
/**
* 删除功能事项
* @param {*} model 数据模型对象
* @param {*} where 查询条件对象
* @param {*} res 响应对象
*/
function del(model, where, res) {
model.findOneAndDelete(where).then(result => {
// 删除数据之中的某条数据
if (result) {
res.json({
code: 200,
msg: "数据删除成功"
})
}
else {
res.json({
code: 300,
msg: "数据删除失败"
})
}
}).catch(err => {
res.json({
code: 400,
msg: "数据删除时出错:" + err
})
})
}
/**
* 分页查询
* @param {*} model 数据模型对象
* @param {*} page 当前页数
* @param {*} pageSize 每页数据条数
* @param {*} where 查找条件
* @param {*} sort 排序条件
* @param {*} res 响应对象
*/
async function find(model, page, pageSize, where, sort, res) {
if (!page) {
page = 1
} else {
page = parseInt(page)
if (isNaN(page)) { //非数字
page = 1
} else { //是数字
if (page < 1) {
page = 1
}
}
}
//判断pageSize是否为空
if (!pageSize) {
pageSize = 10
} else {
pageSize = parseInt(pageSize)
if (isNaN(pageSize)) { //非数字
pageSize = 10
} else { //是数字
if (pageSize < 5) {
pageSize = 5
} else if (pageSize > 30) {
pageSize = 30
}
}
}
let count = 0
// 计算查询到的数据总条数
await model.find(where).countDocuments().then(result => {
count = result
})
// 计算数据的总页数,多出一条也需要开辟一个新页来承装这条数据,使用向上取整
let totalpage = Math.ceil(count / pageSize)
// 这里由于不能为第0页使用添加了一条totalpage > 0
if (totalpage > 0 && page > totalpage) {
page = totalpage
}
let state = (page - 1) * pageSize
// 计算查询初始位置
await model.find(where).sort(sort).skip(state).limit(pageSize).then(result => {
// 查找数据进行一个排序,state时开始的位置,limit是限制每一页的数据条数
if (result) {
res.json({
code: 200,
msg: "查找成功",
data: result,
count,
page,
pageSize
})
}
else {
res.json({
code: 300,
msg: "查找失败",
data: [],
count,
page,
pageSize
})
}
})
.catch(err => {
res.json({
code: 400,
msg: "查找时出错:" + err
})
})
}
/**
* 非分页查询
* @param {*} model 数据模型对象
* @param {*} where 查询条件
* @param {*} sort 排序条件
* @param {*} res 响应对象
*/
function query(model, where, sort, res) {
model.find(where).sort(sort).then(result => {
if (result) {
res.json({
code: 200,
msg: "数据查找成功",
data: result
})
}
else {
res.json({
code: 300,
msg: "数据查询失败"
})
}
}).catch(err => {
res.json({
code: 400,
msg: "数据查询时出错:" + err
})
})
}
/**
* 单个查询
* @param {*} model 数据模型对象
* @param {*} where 查询条件
* @param {*} res 响应对象
*/
function findOne(model, where, res) {
model.findOne(where).then(result => {
if (result) {
res.json({
code: 200,
msg: "数据查找成功"
})
}
else {
res.json({
code: 300,
msg: "数据查找失败"
})
}
}).catch(err => {
res.json({
code: 400,
msg: "数据查找时出错:" + err
})
})
}
module.exports = {
// 向外暴露功能
add, update, del, find, query, findOne
}