zoukankan      html  css  js  c++  java
  • nodejs封装的MongoDB的增删改查方法

    使用nodejs写接口时需要用到的数据库方法的封装,基于增删改查的数据库(MongoDB)操作

    // 暴露模块
    module.exports={
        //
        insert(colName,insertDta){
            // return new Promise包裹异步的操作,成功调用resolve
            return new Promise((resolve,reject)=>{
                colName.insertMany(insertDta,(err)=>{
                    if(err) throw err
                    resolve();
                })
            })
        },
        //
        delete(colName,deleteDate,deleteNum){
            // 判断使用哪个方法
            let deleteType=deleteNum===1?'deleteMany':'deleteOne';
            return new Promise((resolve,reject)=>{
                // 使用[]语法
                colName[deleteType](deleteDate,(err)=>{
                    if(err) throw err
                    resolve()
                })
            })
        },
        // 修改
        update(colName,whereDate,updateDate,updateNum){
            let updateType=updateNum===1?'updateMany':'updateOne'
            return new Promise((resolve,reject)=>{
                colName[updateType](whereDate,updateDate,(err)=>{
                    if(err) throw err
                    resolve();
                })
            })
        },
        //
        find(colName,whereDate,showDate){
            return new Promise((resolve,reject)=>{
                colName.find(whereDate,showDate).exec((err,data)=>{
                    if(err) throw err
                    resolve(data);
                })
            })
        },
        // 排序
        sort(colName,whereDate,showDate,sortDate){
            return new Promise((resolve,reject)=>{
                colName.find(whereDate,showDate).sort(sortDate).exec((err,data)=>{
                    if(err) throw err;
                    resolve(data);
                })
            })
        },
        // 计数
        count (colName) {
            return new Promise((resolve, reject) => {
              colName.count().exec((err, data) => {
                if (err) throw err
                resolve(data)
              })
            })
          },
        // 查找某一字段的分类
        distinct(colName,type){
            return new Promise((resolve,reject)=>{
                colName.distinct(type).exec((err,data)=>{
                    if(err) throw err
                    resolve(data);
                })
            })
        },
        // 分页
        paging(colName,whereDate,showDate,limit,count){
            return new Promise((resolve,reject)=>{
                colName.find(whereDate,showDate).limit(limit).skip(count*limit).exec((err,data)=>{
                    if(err) throw err
                    resolve(data)
                })
            })
    
        }
    }

    附加一个模糊查询的接口写法(正则):

    router.get('/search',(req,res,next) => {
        const {searchText} = req.query;
        const reg=new RegExp(searchText);
        sql.find(Product,{$or:[{proname:reg},{category:reg}]},{_id:0}).then(data=>{
            if(data.length===0){
                res.send({
                    code:'10101',
                    message:'查不到此商品'
                })
            } else {
                res.send({
                    code:'200',
                    message:'商品搜到了',
                    data
                })
            }
        })
    })
  • 相关阅读:
    以JPanel为基础实现一个图像框
    扩展JButton实现自己的图片按钮
    箴言录2014年4月22日
    搜集整理一些Cron表达式例子
    长途旅行感悟
    箴言录2014年4月19日
    Linux下显示硬盘空间的两个命令
    Linux命令复习和练习_02
    Dash:程序员的的好帮手
    Linux的桌面环境gnome、kde、xfce、lxde 等等使用比较
  • 原文地址:https://www.cnblogs.com/shewill/p/13381006.html
Copyright © 2011-2022 走看看