Node.js使用express实现实现简单增删改查mongdb数据库内容

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
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值