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
            })
        }
    })
})

猜你喜欢

转载自www.cnblogs.com/shewill/p/13381006.html