nodejs封裝的MongoDB的增刪改查方法
阿新 • • 發佈:2020-07-26
使用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 }) } }) })