vue3+koa2+mongodb打造comfyui画图系统:(二)使用mongodb实现用户的增删改查并封装

1. 在routes/users.js添加增删改查代码

具体增删改查代码如下:

const router = require('koa-router')()
const { User } = require('../models')

router.prefix('/users')



// 添加系统用户(封装前)
router.post('/add', async (ctx) => {
  let { username, pwd } = ctx.request.body

  await User.create({ username, pwd }).then(res => {
    if (res) {
      ctx.body = {
        code: 200,
        msg: '添加成功',
        data: res
      }
    } else {
      ctx.body = {
        code: 300,
        msg: '添加失败'
      }
    }
  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '添加时出现异常'
    }
    console.error(err)
  })
})


// 删除系统用户(封装前)
router.post('/del', async (ctx) => {
  let { _id } = ctx.request.body
  await User.findOneAndDelete(
    { _id }
  ).then(res => {
    ctx.body = {
      result: res
    }
  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '删除时出现异常'
    }
    console.error(err)
  })
})


// 修改系统用户(封装前)
router.post('/update', async (ctx) => {
  let paras = ctx.request.body
  await User.updateOne(
    { _id: paras._id },
    {
      username: paras.username,
      pwd: paras.pwd
    }
  ).then(res => {
    ctx.body = {
      result: res
    }
  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '修改时出现异常'
    }
    console.error(err)
  })

})


// 查询所有系统用户(封装前)
router.get('/find', async (ctx) => {
  await User.find().then(res => {
    ctx.body = {
      result: res
    }
  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '查询时出现异常'
    }
    console.error(err)
  })
})

// 查询单个系统用户(封装前)
router.get('/findone', async (ctx) => {
  let { _id } = ctx.request.body
  await User.findOne(
    { _id }
  ).then(res => {
    ctx.body = {
      result: res
    }
  }).catch(err => {
    ctx.body = {
      code: 400,
      msg: '查询时出现异常'
    }
    console.error(err)
  })
})

module.exports = router

2.封装业务逻辑层

(1)创建controller文件夹,并在其文件夹下创建user.js文件

通过增删改查来统一管理当前所有业务逻辑。

(2)user.js封装具体代码如下:

const { User } = require('../models')

// 添加系统用户
const userAdd = async (ctx) => {
    let { username, pwd } = ctx.request.body

    await User.create({ username, pwd }).then(res => {
        if (res) {
            ctx.body = {
                code: 200,
                msg: '添加成功',
                data: res
            }
        } else {
            ctx.body = {
                code: 300,
                msg: '添加失败'
            }
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '添加时出现异常'
        }
        console.error(err)
    })
}

// 删除系统用户
const userDelete = async (ctx) => {
    let { _id } = ctx.request.body
    await User.findOneAndDelete(
        { _id }
    ).then(res => {
        ctx.body = {
            result: res
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '删除时出现异常'
        }
        console.error(err)
    })
}

// 修改系统用户
const userUpdate = async (ctx) => {
    let paras = ctx.request.body
    await User.updateOne(
        { _id: paras._id },
        {
            username: paras.username,
            pwd: paras.pwd
        }
    ).then(res => {
        ctx.body = {
            result: res
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '修改时出现异常'
        }
        console.error(err)
    })
}

// 查询所有系统用户
const userFind = async (ctx) => {
    await User.find().then(res => {
        ctx.body = {
            result: res
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '查询时出现异常'
        }
        console.error(err)
    })
}

// 查询单个系统用户
const userFindOne = async (ctx) => {
    let { _id } = ctx.request.body
    await User.findOne(
        { _id }
    ).then(res => {
        ctx.body = {
            result: res
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '查询时出现异常'
        }
        console.error(err)
    })
}


module.exports = {
    userAdd,
    userDelete,
    userUpdate,
    userFind,
    userFindOne
}

(2)在routes/users.js中引入controller/user.js文件并封装

const router = require('koa-router')()
const userCtl = require('../controller/user')
router.prefix('/users')

// 添加系统用户(封装后)
router.post('/add', userCtl.userAdd)
// 删除系统用户(封装后)
router.post('/del', userCtl.userDelete)

// 修改系统用户(封装后)
router.post('/update', userCtl.userUpdate)

// 查询所有系统用户(封装后)
router.get('/find', userCtl.userFind)

// 查询单个系统用户(封装后)
router.get('/findone', userCtl.userFindOne)

module.exports = router

3.封装CRUD

(1)在controller文件夹下新建crudUtil文件夹,在crudUtil文件夹下新建index.js文件

controller/crudUtil/index.js代码如下:

/**************************************
 * 封装简化:用于添加数据的公共方法
 * @param {*} model 
 * @param {*} params 
 * @param {*} ctx 
 */
const add = (model, params, ctx) => (
    model.create(params).then(res => {
        if (res) {
            ctx.body = {
                code: 200,
                msg: '添加成功',
                data: res
            }
        } else {
            ctx.body = {
                code: 300,
                msg: '添加失败'
            }
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '添加时出现异常'
        }
        console.error(err)
    })
)


/**************************************
 * 封装简化:用于删除数据的公共方法
 * @param {*} model 
 * @param {*} where 
 * @param {*} ctx 
 */
const del = (model, where, ctx) => (
    model.findOneAndDelete(where).then(res => {
        ctx.body = {
            result: res
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '删除时出现异常'
        }
        console.error(err)
    })
)

/**************************************
 * 封装简化:用于修改数据的公共方法
 * @param {*} model 
 * @param {*} where
 * @param {*} params 
 * @param {*} ctx 
 */
const update = (model, where, params, ctx) => (
    model.updateOne(where, params).then(res => {
        ctx.body = {
            result: res
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '修改时出现异常'
        }
        console.error(err)
    })
)


/**************************************
 * 封装简化:用于查询所有数据的公共方法
 * @param {*} model 
 * @param {*} where 
 * @param {*} ctx 
 * @returns 
 */
const find = (model, where, ctx) => (
    model.find(where).then(res => {
        ctx.body = {
            result: res
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '查询时出现异常'
        }
        console.error(err)
    })
)


/**************************************
 * 封装简化:用于查询单个数据的公共方法
 * @param {*} model 
 * @param {*} where 
 * @param {*} ctx 
 * @returns 
 */
const findOne = (model, where, ctx) => (
    model.findOne(where).then(res => {
        ctx.body = {
            result: res
        }
    }).catch(err => {
        ctx.body = {
            code: 400,
            msg: '查询时出现异常'
        }
        console.error(err)
    })
)


module.exports = {
    add,
    del,
    update,
    find,
    findOne
}

controller/user.js修改后的代码:

const { User } = require('../models')
const crud = require('./crudUtil')

// 添加系统用户
const userAdd = async (ctx) => {
    let { username = '', pwd = '' } = ctx.request.body
    await crud.add(User, { username, pwd }, ctx)
}

// 删除系统用户
const userDel = async (ctx) => {
    let { _id } = ctx.request.body
    await crud.del(User, { _id }, ctx)
}

// 修改系统用户
const userUpdate = async (ctx) => {
    let params = ctx.request.body
    await crud.update(
        User,
        { _id: params._id },
        { username: params.username, pwd: params.pwd },
        ctx
    )
}

// 查询所有系统用户
const userFind = async (ctx) => {
    await crud.find(User, null, ctx)
}

// 查询单个系统用户
const userFindOne = async (ctx) => {
    await crud.findOne(User, { _id: ctx.params.id }, ctx)
}


module.exports = {
    userAdd,
    userDel,
    userUpdate,
    userFind,
    userFindOne
}

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星辰同学wwq

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值