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() {
        //
      }
    }
    
    module.exports = Db.getInstance();

    3.根目录/app.js

    // 引入模块
    const Koa = require('koa');
    const router = require('koa-router')(); /*引入是实例化路由 推荐*/
    const render = require('koa-art-template');
    const path = require('path');
    const DB = require('./module/db.js');
    
    // 实例化
    let app = new Koa();
    
    // 配置 koa-art-template 模板引擎
    render(app, {
      root: path.join(__dirname, 'views'), // 视图的位置
      extname: '.html', // 后缀名
      debug: process.env.NODE_ENV !== 'production' // 是否开启调试模式
    })
    
    router.get('/', async (ctx) => {
      console.time('start1');
      let result = await DB.find('user', {});
      console.log(result);
      console.timeEnd('start1');
    
      await ctx.render('index', {
        list: {
          name: '张三'
        }
      });
    })
    
    router.get('/news', async (ctx) => {
      console.time('start2');
      let result = await DB.find('user', {});
      console.log(result);
      console.timeEnd('start2');
    
      ctx.body = '新闻页面';
    })
    
    app.use(router.routes());
    app.use(router.allowedMethods());
    
    app.listen(3000);

    .

  • 相关阅读:
    What is a .Net Assembly?
    Reading Assembly attributes in VB.NET
    Debugging With Visual Studio 2005
    The Rules for GetHashCode
    The article discusses a couple of new features introduced for assemblies and versioning in Visual Studio 2005.
    Getting a copy of a DLL in the GAC
    Modeling SingleNeuron Dynamics and Computations: A Balance of Detail and Abstraction
    从数学到密码学(八)
    从数学到密码学(十)
    从数学到密码学(三)
  • 原文地址:https://www.cnblogs.com/crazycode2/p/10958186.html
Copyright © 2011-2022 走看看