mongodb 的 crud封裝

mongodb官方提供的 crud API

var MongoDB = require('mongodb')
var MongoClient = MongoDB.MongoClient
const objectID = MongoDB.objectID

const config = {
  dbUrl = 'mongodb://localhost:27017',
  dbName = 'koa'
}

es6 封裝mongo

  class Db{

    static getInstance(){     // 此靜態(tài)方法用于判斷是否連接 mongodb 數(shù)據(jù)庫(kù),避免重新連接數(shù)據(jù)庫(kù)

        if(!Db.instance){
            Db.instance=new Db();
        }
        return  Db.instance;
    }

    constructor(){
        this.dbClient=''; 
        this.connect();   
    }
 
//  連接數(shù)據(jù)庫(kù)
    connect(){  
      let _that = this;
      return new Promise((resolve,reject)=>{
          if(!_that.dbClient){         
              MongoClient.connect(Config.dbUrl,(err,client)=>{

                  if(err){
                      reject(err)

                  }else{

                      _that.dbClient=client.db(Config.dbName);
                      resolve(_that.dbClient)
                  }
              })

          }else{
              resolve(_that.dbClient);

          }

      })

    }

//  查詢數(shù)據(jù)庫(kù)     

/**
  @param  collectionName   表名
  @param  json        查找的對(duì)象
*/
    find(collectionName,json){

       return new Promise((resolve,reject)=>{

            this.connect().then((db)=>{

                var result=db.collection(collectionName).find(json);

                result.toArray(function(err,docs){

                    if(err){
                        reject(err);
                        return;
                    }
                    resolve(docs);
                })

            })
        })
    }

//  更新數(shù)據(jù)     

/**
  @param  collectionName   表名
  @param  json1        需要更新的對(duì)象
  @param  json2        更新的對(duì)象
*/
    update(collectionName,json1,json2){
        return new Promise((resolve,reject)=>{


                this.connect().then((db)=>{

                    //db.user.update({},{$set:{}})
                    db.collection(collectionName).updateOne(json1,{
                        $set:json2
                    },(err,result)=>{
                        if(err){
                            reject(err);
                        }else{
                            resolve(result);
                        }
                    })

                })

        })

    }
    insert(collectionName,json){
        return new  Promise((resolve,reject)=>{
            this.connect().then((db)=>{

                db.collection(collectionName).insertOne(json,function(err,result){
                    if(err){
                        reject(err);
                    }else{

                        resolve(result);
                    }
                })


            })
        })
    }

    remove(collectionName,json){

        return new  Promise((resolve,reject)=>{
            this.connect().then((db)=>{

                db.collection(collectionName).removeOne(json,function(err,result){
                    if(err){
                        reject(err);
                    }else{

                        resolve(result);
                    }
                })


            })
        })
    }
    getObjectId(id){    

        return new ObjectID(id);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末海渊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子磷仰,更是在濱河造成了極大的恐慌,老刑警劉巖昆码,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齐邦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡姿染,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門秒际,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悬赏,“玉大人,你說我怎么就攤上這事娄徊∶銎模” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵寄锐,是天一觀的道長(zhǎng)兵多。 經(jīng)常有香客問我,道長(zhǎng)橄仆,這世上最難降的妖魔是什么剩膘? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮盆顾,結(jié)果婚禮上怠褐,老公的妹妹穿的比我還像新娘。我一直安慰自己您宪,他們只是感情好惫搏,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚕涤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铣猩。 梳的紋絲不亂的頭發(fā)上揖铜,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音达皿,去河邊找鬼天吓。 笑死贿肩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的龄寞。 我是一名探鬼主播汰规,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼物邑!你這毒婦竟也來了溜哮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤色解,失蹤者是張志新(化名)和其女友劉穎茂嗓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體科阎,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡述吸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锣笨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝌矛。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖错英,靈堂內(nèi)的尸體忽然破棺而出入撒,到底是詐尸還是另有隱情,我是刑警寧澤走趋,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布衅金,位于F島的核電站,受9級(jí)特大地震影響簿煌,放射性物質(zhì)發(fā)生泄漏氮唯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一姨伟、第九天 我趴在偏房一處隱蔽的房頂上張望惩琉。 院中可真熱鬧,春花似錦夺荒、人聲如沸瞒渠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伍玖。三九已至,卻和暖如春剿吻,著一層夾襖步出監(jiān)牢的瞬間窍箍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留椰棘,地道東北人纺棺。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像邪狞,于是被迫代替她去往敵國(guó)和親祷蝌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,947評(píng)論 2 89
  • 本文為轉(zhuǎn)載文章帆卓,覺得寫得不錯(cuò)巨朦,雖然只是寫到了3.0版本的存儲(chǔ)引擎,后續(xù)我會(huì)補(bǔ)充3.4的現(xiàn)狀 在歷經(jīng)版本號(hào)修改(2....
    倪寶華閱讀 2,061評(píng)論 1 9
  • 我覺得 我現(xiàn)在除了不是很要讀書 其他都還挺好的
    一碗清湯水閱讀 186評(píng)論 0 0
  • 中國(guó)曹碩 音樂 動(dòng)聽的發(fā)出了 她那好聽的嗓音 音樂走過 小溪 唱出了動(dòng)人的音樂 音樂走過 小花旁 唱出了迷人的音樂
    幸福一家曹碩閱讀 116評(píng)論 0 0
  • 1.清爽清透鳞疲,像茶水般清澈
    格桑月閱讀 1,483評(píng)論 0 0