Node.JS中使用单例封装MongoDB
在Node.JS中使用MongoDB操作数据库时,通常需要调用connnet方法连接数据库后使用它返回的db对象进行操作,这样就导致了每次操作数据库时都需要连接数据库才能返回一个db对象,下面代码使用了单例进行封装,这样封装可以是db对象用于暴露出来,不用每次操作数据库都使用connet方法,极大提高了MongoDB的性能
let MongoDB = require("mongodb") let MongoClient = MongoDB.MongoClient let ObjectID = MongoDB.ObjectID class Db{ static getInstance(){ if(!Db.instance){ Db.instance=new Db() } return Db.instance } constructor(){ this.dbClient=""; this.connect(); } connect(){ let that = this; return new Promise((res,rej)=>{ if(!that.dbClient){ MongoClient.connect(‘mongodb://localhost:27017/‘,{ useUnifiedTopology: true},(err,client)=>{ if(err){ rej(err) }else{ that.dbClient=client.db("koa") res(that.dbClient) } }) }else{ res(that.dbClient) } }) } find(collectionName,json){ return new Promise((res,rej)=>{ this.connect().then(db=>{ let result = db.collection(collectionName).find(json); result.toArray((err,docs)=>{ if(err){ rej(err) return } res(docs) }) }) }) } update(collectionName,json1,json2){ return new Promise((res,rej)=>{ this.connect().then((db)=>{ db.collection(collectionName).updateOne(json1,{ $set:json2 },(err,result)=>{ if(err){ rej(err) }else{ res(result) } }) }) }) } insert(collectionName,json){ return new Promise((res,rej)=>{ this.connect().then((db)=>{ db.collection(collectionName).insertOne(json,(err,result)=>{ if(err){ rej(err) }else{ res(result) } }) }) }) } remove(collectionName,json){ return new Promise((res,rej)=>{ this.connect().then((db)=>{ db.collection(collectionName).removeOne(json,(err,result)=>{ if(err){ rej(err) }else{ res(result) } }) }) }) } } module.exports=Db.getInstance();
相关推荐
lbyd0 2020-11-17
BigYellow 2020-11-16
sushuanglei 2020-11-12
我心似明月 2020-11-09
zhushenghan 2020-11-09
sunnnyduan 2020-10-16
不要皱眉 2020-10-14
xiaohai 2020-09-29
songxiugongwang 2020-09-22
萌亖 2020-09-17
LuckyLXG 2020-09-08
sdmzhu 2020-09-01
mkhhxxttxs 2020-09-16
xiaohai 2020-09-16
newcome 2020-09-09
jaylong 2020-08-19
大秦铁骑 2020-08-19
thatway 2020-08-19