zoukankan      html  css  js  c++  java
  • 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.效果图

    .

  • 相关阅读:
    WEB环境搭建(tomcat)、Eclipse连接tomcat
    spring—springmvc整合
    声明式事务
    mybatis—当表的字段名和实体类的列名不对应时的三种处理方式
    Spring整合MyBatis
    mybatis关系映射(1对1,1对多,多对多)
    mybatis
    编程式事务
    使用maven在netbeans下构建wicket项目
    mysql问题Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)的解决方法
  • 原文地址:https://www.cnblogs.com/crazycode2/p/10952653.html
Copyright © 2011-2022 走看看