let mongodb = require("mongodb")
let mongodCt = mongodb.MongoClient
let ObjectId = mongodb.ObjectId
let open = ({dbName='student',collectionName,url="mongodb://127.0.0.1:27017"})=>{
return new Promise((resolve,reject)=>{
mongodCt.connect(url,{useUnifiedTopology: true},(err,client)=>{
if(err){
reject(err)
}else{
let db = client.db(dbName)
let collection = db.collection(collectionName)
resolve({collection,client})
}
})
})
}
let findList = ({
collectionName,
dbName='student',
_page,_limit,_sort,q
})=>{
let rule = q ? {username:new RegExp(q,'g')} : {}
return new Promise((resolve,reject)=>{
open({dbName,collectionName})
.then(({collection,client})=>{
collection.find(rule,{
skip:_page*_limit,
limit:_limit,
sort:{[_sort]:1}
}).toArray((err,result)=>{
if(!err && result.length>0){
resolve({err:0,data:result})
}else{
resolve({err:1,msg:"查无数据..."})
}
client.close()
})
})
.catch(err=>{
reject({err:1,msg:"数据库链接失败...."})
})
})
}
let findDetail = ({
dbName="student",
collectionName,
_id=null
})=>{
return new Promise((resolve,reject)=>{
open({dbName,collectionName})
.then(({collection,client})=>{
if(_id.length === 24){
collection.find({_id:ObjectId(_id)}).toArray((err,data)=>{
if(!err && data.length>0){
resolve({err:0,data:data[0]})
}else{
resolve({err:1,msg:"查询不到数据...."})
}
})
}else{
reject({err:1,msg:"id长度有误..."})
}
})
.catch(err=>reject({err:1,msg:"链接数据库失败...."}))
})
}
exports.open = open;
exports.findList = findList;
exports.findDetail = findDetail;