1. 程式人生 > 實用技巧 >nodejs封裝的MongoDB的增刪改查方法

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