美文网首页
封装MongoDB库

封装MongoDB库

作者: 追逐时光的光光 | 来源:发表于2018-06-08 15:48 被阅读0次

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

    相关文章

      网友评论

          本文标题:封装MongoDB库

          本文链接:https://www.haomeiwen.com/subject/losasftx.html