koa 基础(二十二)封装 DB 库 --- 测试
1.根目录/module/config.js
/** * 配置文件 */ var app = { dbUrl: 'mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb', dbName: 'koa' } module.exports = app;
2.根目录/module/db.js
/** * DB库 */ var MongoClient = require('mongodb').MongoClient; var Config = require('./config.js'); class Db { /** * 单例 * 解决多次实例化,实例不共享的问题 */ static getInstance() { if (!Db.instance) { Db.instance = new Db(); } return Db.instance; } constructor() { this.dbClient = ''; /*属性 存放db对象*/ // this.connect(); } connect() { /*连接数据库*/ let _that = this; return new Promise((resolve, reject) => { if (!_that.dbClient) { /*解决数据库多次连接的问题*/ MongoClient.connect(Config.dbUrl, (err, client) => { if (err) { reject(err); } else { _that.dbClient = client.db(Config.dbName); resolve(_that.dbClient); } }) } else { resolve(_that.dbClient); } }) } find(collectionName, json) { return new Promise((resolve, reject) => { this.connect().then((db) => { var result = db.collection(collectionName).find(json); result.toArray((err, docs) => { if (err) { reject(err); return; } resolve(docs); }) }) }) } insert() { // } } // myDb1 // var myDb1 = new Db(); var myDb1 = Db.getInstance(); setTimeout(function () { console.time('start1'); myDb1.find('user', {}).then(function (data) { // console.log(data); console.timeEnd('start1'); }) }, 100); setTimeout(function () { console.time('start2'); myDb1.find('user', {}).then(function (data) { // console.log(data); console.timeEnd('start2'); }) }, 3000); // myDb2 // var myDb2 = new Db(); var myDb2 = Db.getInstance(); setTimeout(function () { console.time('start3'); myDb2.find('user', {}).then(function (data) { // console.log(data); console.timeEnd('start3'); }) }, 5000); setTimeout(function () { console.time('start4'); myDb2.find('user', {}).then(function (data) { // console.log(data); console.timeEnd('start4'); }) }, 7000);
3.效果图
.