封裝MongoDB庫

const Mongo = require('mongodb');

const MongoClient = Mongo.MongoClient;

const ObjectID = Mongo.ObjectID;

const Config = require('./config.js');

class DB {

? static getInstance(){

? ? if(!DB.instance){

? ? ? DB.instance = new DB();

? ? }

? ? return DB.instance;

? }

? constructor() {

? ? this.dbClient = '';

? ? this.connect()

? }

? connect(){? ? // 連接數(shù)據(jù)庫

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

? ? ? if(!this.dbClient){

? ? ? ? MongoClient.connect(Config.url, (err, client)=>{

? ? ? ? ? if(err){

? ? ? ? ? ? console.log(err);

? ? ? ? ? ? reject(err);

? ? ? ? ? } else {

? ? ? ? ? ? let db = client.db(Config.dbName);

? ? ? ? ? ? this.dbClient = db;

? ? ? ? ? ? resolve(this.dbClient);

? ? ? ? ? }

? ? ? ? })

? ? ? } else {

? ? ? ? resolve(this.dbClient);

? ? ? }

? ? })

? }

? find(collecter, json){

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

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

? ? ? ? let res = db.collection(collecter).find(json);

? ? ? ? res.toArray((err, result)=>{

? ? ? ? ? if(err){

? ? ? ? ? ? ? reject(err);

? ? ? ? ? } else {

? ? ? ? ? ? resolve(result);

? ? ? ? ? }

? ? ? ? })

? ? ? })

? ? })

? }

? insert(collecter, json){

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

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

? ? ? ? db.collection(collecter).insertOne(json, (err, res)=>{

? ? ? ? ? if(err){

? ? ? ? ? ? reject(err);

? ? ? ? ? } else {

? ? ? ? ? ? resolve(res)

? ? ? ? ? }

? ? ? ? })

? ? ? })

? ? })

? }

? update(collecter,wherejson,updatejson){

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

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

? ? ? ? db.collection(collecter).updateOne(wherejson, {$set: updatejson}, (err, res)=>{

? ? ? ? ? if(err){

? ? ? ? ? ? reject(err);

? ? ? ? ? } else {

? ? ? ? ? ? resolve(res);

? ? ? ? ? }

? ? ? ? })

? ? ? })

? ? })

? }

? delete(collecter, json){

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

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

? ? ? ? db.collection(collecter).deleteOne(json, (err, res)=>{

? ? ? ? ? if(err){

? ? ? ? ? ? reject(err);

? ? ? ? ? } else {

? ? ? ? ? ? resolve(res);

? ? ? ? ? }

? ? ? ? })

? ? ? })

? ? })

? }

? getObjectId(id){

? ? return new ObjectID(id);

? }

}

module.exports = DB.getInstance();

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

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

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,142評論 0 2
  • 特點(diǎn) Promise能將回調(diào)分離出來,在異步操作執(zhí)行之后,用鏈?zhǔn)椒椒▓?zhí)行回調(diào),雖然es5用封裝函數(shù)也能實(shí)現(xiàn),但是如...
    一二三kkxx閱讀 717評論 0 1
  • 在ES6當(dāng)中添加了很多新的API其中很值得一提的當(dāng)然少不了Promise,因?yàn)镻romise的出現(xiàn),很輕松的就給開...
    嘿_那個(gè)誰閱讀 3,750評論 2 3
  • # Ajax標(biāo)簽(空格分隔): 筆記整理---[TOC]### 從輸入網(wǎng)址開始:- 在學(xué)習(xí)ajax之前,你應(yīng)該先了...
    V8閱讀 343評論 1 0
  • 如果讓你再選擇一次,你會(huì)放下浮躁,去尋找你的詩和遠(yuǎn)方嗎? 湖南衛(wèi)視最近出了一檔大火的戶外綜藝節(jié)目《向往的生活》,節(jié)...
    清浠閱讀 425評論 0 1

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