koa操作mongodb数据库之封装方法

已经打包上传到NPM,地址:https://www.npmjs.com/package/opadatabase

已经打包上传到GITHUB,地址:https://github.com/zhuyangmsg/koa-database

Mongodb简单介绍

我们只需要了解两点:

1、快速,数据是存储在物理内存里,读取非常方便

2、存储的类型是json格式

简要分析

1、引用模块
let MongoClient = require("mongodb").MongoClient

2、定义类,在类里面定义方法

3、定义connect连接数据库方法,这里连接数据库是一个异步的过程,要用到promise做异步处理,最后返回的是一个连接库的对象,简称库对象。

connect(){
        return new Promise((resolve,rejess)=>{
            if(!this.dbaseStore){  //已经建立连接的方法,直接返回参数
                MongoClient.connect(dbUrl,{ useNewUrlParser: true } ,(err,db)=>{
                    if(err) throw err
                    let dbase = db.db("test");
                    this.dbaseStore=dbase
                    resolve(this.dbaseStore)
                })
            }else{
                resolve(this.dbaseStore)
            }
        })
    }

4、定义dbFind查找数据库的方法,这里也有用到promise做异步处理。传入表名和条件,返回查找结果

dbFind(tableName,findContent){
        return new Promise((resolve,rejess)=>{
            this.connect().then((dbase)=>{
                dbase.collection(tableName).find(findContent).toArray((err,response)=>{
                    if(err) throw err;
                    resolve(response)
                })
            })
        })
    }

注意事项

一、每次调用方法都执行了connect连接数据库方法,这样每次连接都会多产生1秒的耗时。我们可以对connect方法进行优化,当第一次连接的时候才需要连接数据库,把需要的值存储到构造函数(constructor)里面,第二次连接的时候直接返回构造函数(constructor)里变量的值。

二、每次实例化的时候,都会调用构造函数(constructor),构造函数里面的变量会进行初始化,又会产生问题一。解决方式,定义一个静态方法,每次调用的时候,进行判断,已经实例化过的构造函数,把实例化方法存储到成员变量并进行返回。

static initDataBase(){
        console.log("静态方法");
        if(!this.singleDataBase){  //判断已经实例化过的构造函数,不用再进行实例化,再次实例化数据为初始化,导致每次实例化都会进行数据库的连接,消耗性能。
            this.singleDataBase=new opaDataBase()
        }
        return this.singleDataBase;
    }

三、定义静态方法的时候,传入两个参数,第一个-连接url地址,第二个-库名。使用着可以方便的更改连接服务地址和数据库的名字了。

你可能感兴趣的:(koa操作mongodb数据库之封装方法)