封装 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();
只会实例化一次
效果截图
实践
mongodb gui界面
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);
效果截图