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