封裝 mongodb DB 庫,單例創(chuàng)建數(shù)據(jù)庫連接
// app.js
class Db {
static getInstance(){ /*單例*/
if(!Db.instance){
Db.instance=new Db();
}
return Db.instance;
}
constructor(){
console.log('實(shí)例化會觸發(fā)構(gòu)造函數(shù)');
this.connect();
}
connect(){
console.log('連接數(shù)據(jù)庫');
}
find(){
console.log('查詢數(shù)據(jù)庫');
}
}
var myDb=Db.getInstance();
var myDb2=Db.getInstance();
var myDb3=Db.getInstance();
var myDb4=Db.getInstance();
myDb3.find();
myDb4.find();
只會實(shí)例化一次
效果截圖
image.png
實(shí)踐
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' //是否開啟調(diào)試模式
});
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