# node操作mongodb數(shù)據(jù)庫(kù)的封裝

node操作mongodb數(shù)據(jù)庫(kù)的封裝

最近玩node 的時(shí)候,我發(fā)現(xiàn)我需要個(gè)數(shù)據(jù)庫(kù)近迁,我選擇了mongodb這個(gè)數(shù)據(jù)庫(kù),我也就簡(jiǎn)單的封裝了幾個(gè)操作,以方便的使用
首先引入mongodb的包

 var mongodb = require('mongodb'); // 引入mongodb依賴```
**引入數(shù)據(jù)庫(kù)配置文件**
```javascript
var dataconfig = require('../config/config'); // 引入mongodb配置```
**數(shù)據(jù)庫(kù)配置文件**
配置文件根據(jù)自己的不同需求配置
```javascript
/* @dataconfig 數(shù)據(jù)庫(kù)配置*/
var dataconfig={
 dataurl:"localhost", 
dataport:'27017',
 dataname:'db'
};
module.exports = dataconfig;```
**創(chuàng)建對(duì)象垂睬,并且向其中寫入數(shù)據(jù)庫(kù)操作方法**
```javascript
/*
創(chuàng)建mongodb操作對(duì)象
*/
var Mainpulation = {
    /*
    @selectall 方法返回全部所有數(shù)據(jù)
        @dataname  數(shù)據(jù)庫(kù)名稱
    @dealdata   回調(diào)處理函數(shù)  格式function(result){};
    */
    selectall: function(dataname, dealdata) {
        var server = new mongodb.Server(dataconfig.dataurl, dataconfig.dataport, {
            auto_reconnect: true
        }); // 創(chuàng)建mongodb服務(wù)
        var db = new mongodb.Db(dataconfig.dataname, server, {
            safe: true
        });
        db.open(function(err, db) {
            if (err) {
                console.log('數(shù)據(jù)庫(kù)打開失敗');
            } else {
                db.createCollection(dataname, {
                    safe: true
                }, function(err, collection) {
                    if (err) {
                        console.log('數(shù)據(jù)庫(kù)連接失敗');
                    } else {
                        //  var tmp1 = {title:'hellodsad'};
                        //  var tmp2 = {title:'worlddsad'};
                        //  collection.insert([tmp1,tmp2],{safe:true},function(err,result){
                        //       console.log(result);
                        //  });
                        collection.find().toArray(function(err, docs) {
                            console.log('find');
                            dealdata(docs);
                            db.close();
                        });
                    }
                })
            }
        })
        db.on("close", function(err, data) {
            if (err) {
                console.log("數(shù)據(jù)庫(kù)關(guān)閉失敗");
            }
            console.log('數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉');
        });
    },
    /*
    @selectone 查詢符合條件的數(shù)據(jù)
    @dataname 數(shù)據(jù)庫(kù)名稱
    @selectlanguage 查詢控制語(yǔ)句  格式{index:value,index,value};
    @dealdata   回調(diào)處理函數(shù)  格式function(result){};
    */
    select: function(dataname, selectlanguage, dealdata) {
        var server = new mongodb.Server(dataconfig.dataurl, dataconfig.dataport, {
            auto_reconnect: true
        }); // 創(chuàng)建mongodb服務(wù)
        var db = new mongodb.Db(dataconfig.dataname, server, {
            safe: true
        });
        db.open(function(err, db) {
            if (err) {
                console.log('數(shù)據(jù)庫(kù)打開失敗');
            } else {
                db.createCollection(dataname, {
                    safe: true
                }, function(err, collection) {
                    if (err) {
                        console.log('數(shù)據(jù)庫(kù)連接失敗');
                    } else {
                        collection.find(selectlanguage).toArray(function(err, docs) {
                            console.log('find');
                            dealdata(docs);
                            db.close();
                        });
                    }
                })
            }
        })
        db.on("close", function(err, data) {
            if (err) {
                console.log("數(shù)據(jù)庫(kù)關(guān)閉失敗");
            }
            console.log('數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉');
        });
    },
    /*
    @insert添加數(shù)據(jù)格式j(luò)son格式
    @dataname 數(shù)據(jù)庫(kù)名稱
    @dealdata 回調(diào)函數(shù)處理函數(shù)有一個(gè)result參數(shù)
    */
    insert: function(dataname, insertlanguage, dealdata) {
        var server = new mongodb.Server(dataconfig.dataurl, dataconfig.dataport, {
            auto_reconnect: true
        }); // 創(chuàng)建mongodb服務(wù)
        var db = new mongodb.Db(dataconfig.dataname, server, {
            safe: true
        });
        db.open(function(err, db) {
            if (err) {
                console.log('數(shù)據(jù)庫(kù)打開失敗');
            } else {
                db.createCollection(dataname, {
                    safe: true
                }, function(err, collection) {
                    if (err) {
                        console.log('數(shù)據(jù)庫(kù)連接失敗');
                    } else {
                        collection.insert(insertlanguage, {
                            safe: true
                        }, function(err, result) {
                                                    console.log(result+'插入成功');
                            dealdata(result);
                            db.close();
                        });
                    }
                })
            }
        })
        db.on("close", function(err, data) {
            if (err) {
                console.log("數(shù)據(jù)庫(kù)關(guān)閉失敗");
            }
            console.log('數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉');
        });
    },
    /*
     @update 修改數(shù)據(jù)的方法
     @update添加數(shù)據(jù)格式j(luò)son格式
     @dataname 數(shù)據(jù)庫(kù)名稱
     @dealdata 回調(diào)函數(shù)處理函數(shù)有一個(gè)result參數(shù)
     */
    update: function(dataname, updatelanguage,updatecondition, dealdata) {
        var server = new mongodb.Server(dataconfig.dataurl, dataconfig.dataport, {
            auto_reconnect: true
        }); // 創(chuàng)建mongodb服務(wù)
        var db = new mongodb.Db(dataconfig.dataname, server, {
            safe: true
        });
        db.open(function(err, db) {
            if (err) {
                console.log('數(shù)據(jù)庫(kù)打開失敗');
            } else {
                db.createCollection(dataname, {
                    safe: true
                }, function(err, collection) {
                    if (err) {
                        console.log('數(shù)據(jù)庫(kù)連接失敗');
                    } else {
                        collection.update(updatecondition,updatelanguage, {
                            safe: true
                        }, function(err, result) {
                            console.log(result+'修改成功');
                            dealdata(result);
                            db.close();
                        });
                    }
                })
            }
        })
        db.on("close", function(err, data) {
            if (err) {
                console.log("數(shù)據(jù)庫(kù)關(guān)閉失敗");
            }
            console.log('數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉');
        });
    },
    /*
    @remove  刪除數(shù)據(jù)的方法
    @dataname 數(shù)據(jù)庫(kù)名稱
    @removelanguage 刪除數(shù)據(jù)的條件
    @dealdata 回調(diào)函數(shù)處理函數(shù)有一個(gè)result參數(shù)
    */
    remove: function(dataname, removelanguage, dealdata) {
        var server = new mongodb.Server(dataconfig.dataurl, dataconfig.dataport, {
            auto_reconnect: true
        }); // 創(chuàng)建mongodb服務(wù)
        var db = new mongodb.Db(dataconfig.dataname, server, {
            safe: true
        });
        db.open(function(err, db) {
            if (err) {
                console.log('數(shù)據(jù)庫(kù)打開失敗');
            } else {
                db.createCollection(dataname, {
                    safe: true
                }, function(err, collection) {
                    if (err) {
                        console.log('數(shù)據(jù)庫(kù)連接失敗');
                    } else {
                        collection.remove(removelanguage, {
                            safe: true
                        }, function(err, result) {
                            dealdata(result);
                            db.close();
                        });
                    }
                })
            }
        })
        db.on("close", function(err, data) {
            if (err) {
                console.log("數(shù)據(jù)庫(kù)關(guān)閉失敗");
            }
            console.log('數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉');
        });
    },
    /*
    @remove  刪除全部數(shù)據(jù)的方法
    @dataname 數(shù)據(jù)庫(kù)名稱
    @dealdata 回調(diào)函數(shù)處理函數(shù)有一個(gè)result參數(shù)
    */
    removeall: function(dataname, dealdata) {
        var server = new mongodb.Server(dataconfig.dataurl, dataconfig.dataport, {
            auto_reconnect: true
        }); // 創(chuàng)建mongodb服務(wù)
        var db = new mongodb.Db(dataconfig.dataname, server, {
            safe: true
        });
        db.open(function(err, db) {
            if (err) {
                console.log('數(shù)據(jù)庫(kù)打開失敗');
            } else {
                db.createCollection(dataname, {
                    safe: true
                }, function(err, collection) {
                    if (err) {
                        console.log('數(shù)據(jù)庫(kù)連接失敗');
                    } else {
                        collection.remove({}, {
                            safe: true
                        }, function(err, result) {
                            dealdata(result);
                            db.close();
                        });
                    }
                })
            }
        })
        db.on("close", function(err, data) {
            if (err) {
                console.log("數(shù)據(jù)庫(kù)關(guān)閉失敗");
            }
            console.log('數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉');
        });
    }
};

數(shù)據(jù)庫(kù)封裝完畢,我們測(cè)試一下

//測(cè)試用例


Mainpulation.select('test', {"title": "hello"}, function(result) {
    console.log("select查詢結(jié)果");
    console.log(result);
})
Mainpulation.insert('test',{"insert":"hello"},function(result){
 console.log('inserts插入結(jié)果');
  console.log(result);
})
Mainpulation.remove('test',{"insert":"hello"},function(result){
 console.log(result);
})
Mainpulation.removeall('test',function(result){
console.log(result);
})
Mainpulation.selectall('test', function(result) {
    console.log('selectall查詢結(jié)果');
    console.log(result);
});


當(dāng)然最后我們封裝完畢后,我們要把這個(gè)模塊導(dǎo)出一下方便我們以后的使用

module.exports = Mainpulation;```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驹饺,一起剝皮案震驚了整個(gè)濱河市钳枕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赏壹,老刑警劉巖鱼炒,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蝌借,居然都是意外死亡昔瞧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門菩佑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)自晰,“玉大人,你說(shuō)我怎么就攤上這事稍坯〕贶瘢” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵劣光,是天一觀的道長(zhǎng)袜蚕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)绢涡,這世上最難降的妖魔是什么牲剃? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮雄可,結(jié)果婚禮上凿傅,老公的妹妹穿的比我還像新娘。我一直安慰自己数苫,他們只是感情好聪舒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著虐急,像睡著了一般箱残。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上止吁,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天被辑,我揣著相機(jī)與錄音,去河邊找鬼敬惦。 笑死盼理,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俄删。 我是一名探鬼主播宏怔,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼奏路,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了臊诊?” 一聲冷哼從身側(cè)響起鸽粉,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妨猩,沒(méi)想到半個(gè)月后潜叛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壶硅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年威兜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庐椒。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡椒舵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出约谈,到底是詐尸還是另有隱情笔宿,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布棱诱,位于F島的核電站泼橘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏迈勋。R本人自食惡果不足惜炬灭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靡菇。 院中可真熱鬧重归,春花似錦、人聲如沸厦凤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)较鼓。三九已至椎木,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間博烂,已是汗流浹背拓哺。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脖母,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓闲孤,卻偏偏與公主長(zhǎng)得像谆级,于是被迫代替她去往敵國(guó)和親烤礁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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