《node,mongodb, koa系列》《七》

封装 mongodb DB 库,单例创建数据库连接
// app.js


class Db {

    static getInstance(){   /*单例*/

        if(!Db.instance){

            Db.instance=new Db();
        }
        return Db.instance;
    }

    constructor(){

        console.log('实例化会触发构造函数');

        this.connect();
    }

    connect(){

        console.log('连接数据库');
    }
    find(){
        console.log('查询数据库');
    }
}

var myDb=Db.getInstance();


var myDb2=Db.getInstance();


var myDb3=Db.getInstance();


var myDb4=Db.getInstance();

myDb3.find();

myDb4.find();

只会实例化一次
效果截图

image.png

实践
mongodb gui界面


image.png

config.js

const app = {
    dbUrl: 'mongodb://127.0.0.1:27017/',
    dbName: 'itying'
}

module.exports = app

app.js

var Koa=require('koa'),
    router = require('koa-router')(),
    render = require('koa-art-template'),
    path=require('path'),

    DB=require('./module/db.js');

var app=new Koa();
//配置 koa-art-template模板引擎
render(app, {
    root: path.join(__dirname, 'html'),   // 视图的位置
    extname: '.html',  // 后缀名
    debug: process.env.NODE_ENV !== 'production'  //是否开启调试模式
});
router.get('/',async (ctx)=>{

    console.time('start');
    var result=await DB.find('user',{});

    console.timeEnd('start');
    console.log(result);
    await ctx.render('art',{
        list:{
            name:'张三'
        }
    });
})
router.get('/news',async (ctx)=>{

    console.time('start');
    var result=await DB.find('user',{});

    console.timeEnd('start');
    ctx.body="这是一个新闻页面";
})
app.use(router.routes());   /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);



效果截图


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容