ES6封裝數(shù)據(jù)庫(kù)操作模塊

使用ES6的方式來(lái)封裝一個(gè)數(shù)據(jù)庫(kù)操作模塊,目的是更快、更小、更方便

本文重點(diǎn)考察在優(yōu)化數(shù)據(jù)庫(kù)查詢(xún)效率,一方便是優(yōu)化連接數(shù)據(jù)庫(kù)的時(shí)間,另一方便是優(yōu)化實(shí)例化對(duì)象所花費(fèi)的時(shí)間。

1.導(dǎo)入mongodb、assert模塊,聲明mogodb的url,聲明數(shù)據(jù)庫(kù)名字

2.創(chuàng)建一個(gè)類(lèi)Db,由于connect()和find()是平級(jí)關(guān)系,且都是異步操作,如果想在find中拿到connect()中的數(shù)據(jù)庫(kù)名稱(chēng),需要使用return ?Promise()對(duì)象進(jìn)行傳值。

由于異步操作使用return拿不到值
查找數(shù)據(jù)

3.但是由于查找數(shù)據(jù)中又再一次調(diào)用了connect()方法,這樣就再一次連接了數(shù)據(jù)庫(kù),因此就又花費(fèi)了一些時(shí)間,從而降低了效率。為了節(jié)省連接數(shù)據(jù)庫(kù)花費(fèi)的時(shí)間??梢哉乙粋€(gè)中間者,進(jìn)行判斷監(jiān)聽(tīng)。

①創(chuàng)建一個(gè)構(gòu)造函數(shù),在構(gòu)造函數(shù)中初始化這個(gè)中間者this._mgdb=null。

②在connect()中的Promise類(lèi)中進(jìn)行判斷,如果已經(jīng)連接就使用之前的狀態(tài),如果沒(méi)有連接,就重新連接。

4.由于每次需要調(diào)用Db里面的方法,都需要實(shí)例化一個(gè)對(duì)象才能調(diào)用(因?yàn)镈b里面的方法是動(dòng)態(tài)方法,動(dòng)態(tài)方法只能對(duì)象調(diào)用,所以需要先實(shí)例化),為了優(yōu)化每次都需要實(shí)例化的操作,可以采用單例方法(聲明一個(gè)靜態(tài)方法,在靜態(tài)方法中進(jìn)行判斷,如果沒(méi)有則new一個(gè)對(duì)象出來(lái),如果有,直接調(diào)用該靜態(tài)方法即可(靜態(tài)方法類(lèi)可以直接調(diào)用,節(jié)省了實(shí)例化對(duì)象的操作?。?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容