使用ES6的方式来封装一个数据库操作模块,目的是更快、更小、更方便
本文重点考察在优化数据库查询效率,一方便是优化连接数据库的时间,另一方便是优化实例化对象所花费的时间。
1.导入mongodb、assert模块,声明mogodb的url,声明数据库名字

2.创建一个类Db,由于connect()和find()是平级关系,且都是异步操作,如果想在find中拿到connect()中的数据库名称,需要使用return Promise()对象进行传值。


3.但是由于查找数据中又再一次调用了connect()方法,这样就再一次连接了数据库,因此就又花费了一些时间,从而降低了效率。为了节省连接数据库花费的时间。可以找一个中间者,进行判断监听。
①创建一个构造函数,在构造函数中初始化这个中间者this._mgdb=null。

②在connect()中的Promise类中进行判断,如果已经连接就使用之前的状态,如果没有连接,就重新连接。


4.由于每次需要调用Db里面的方法,都需要实例化一个对象才能调用(因为Db里面的方法是动态方法,动态方法只能对象调用,所以需要先实例化),为了优化每次都需要实例化的操作,可以采用单例方法(声明一个静态方法,在静态方法中进行判断,如果没有则new一个对象出来,如果有,直接调用该静态方法即可(静态方法类可以直接调用,节省了实例化对象的操作!)


网友评论