封装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(){    // 连接数据库

    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();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,068评论 0 2
  • 特点 Promise能将回调分离出来,在异步操作执行之后,用链式方法执行回调,虽然es5用封装函数也能实现,但是如...
    一二三kkxx阅读 645评论 0 1
  • 在ES6当中添加了很多新的API其中很值得一提的当然少不了Promise,因为Promise的出现,很轻松的就给开...
    嘿_那个谁阅读 3,689评论 2 3
  • # Ajax标签(空格分隔): 笔记整理---[TOC]### 从输入网址开始:- 在学习ajax之前,你应该先了...
    V8阅读 307评论 1 0
  • 如果让你再选择一次,你会放下浮躁,去寻找你的诗和远方吗? 湖南卫视最近出了一档大火的户外综艺节目《向往的生活》,节...
    清浠阅读 386评论 0 1