1. 配置文件
let app = {
dbUrl: 'mongodb://localhost:27017/',
dbName: 'test'
}
module.exports = app;
2. 封裝
let Config = require('./config.js')
let MongoClient = require('mongodb').MongoClient;
class Db {
static getInstance() {
if (!Db.instance) {
Db.instance = new Db()
}
return Db.instance;
}
constructor() {
console.log('鏈接數據庫')
this.dbClient = ''
this.connect()
}
connect() {
return new Promise((resolve, reject) => {
if (this.dbClient) {
resolve(this.dbClient)
} else {
MongoClient.connect(Config.dbUrl, (err, client) => {
if (err) {
console.log(err);
return;
} else {
this.dbClient = client.db(Config.dbName)
resolve(this.dbClient)
}
})
}
})
}
find(collectionName, json) {
return new Promise((resolve, reject) => {
this.connect().then((db) => {
let result = db.collection(collectionName).find(json);
result.toArray((err, doc) => {
if (err) {
reject(err)
return;
}
resolve(doc)
})
})
})
}
insert(collectionName, json) {
return new Promise((resolve, reject) => {
this.connect().then((db) => {
db.collection(collectionName).insertOne(json, function(err, result) {
if (err) {
reject(err)
} else {
resolve(result)
}
})
})
})
}
update(collectionName, json1, json2) {
return new Promise((resolve, reject) => {
this.connect().then((db) => {
db.collection(collectionName).updateOne(json1, {
$set: json2
}, (err, result) => {
if (err) {
reject(err)
} else {
resolve(result)
}
})
})
})
}
remove(collectionName, json) {
return new Promise((resolve, reject) => {
this.connect().then((db) => {
db.collection(collectionName).removeOne(json, (err, result) => {
if (err) {
reject(err)
} else {
resolve(result)
}
})
})
})
}
}
3. 增加數據
myDb.insert('test', { "name": "doudou", "age": "18" })
4. 刪除數據
myDb.remove('test', { 'name': 'doudou' })
5. 修改數據
myDb.update('test', { 'name': '佳佳' }, { 'name': 'jiajia' })
6. 查找數據
myDb.find('test', {}).then((data) => {
console.log(data)
})
7. 前後臺數據交互
let Koa = require('koa');
let app = new Koa();
let router = require('koa-router')();
const DB = require('./db.js');
router.get('/', async(ctx) => {
let res = await DB.find('user', {});
console.log(res)
ctx.body = '這個是頁面'
});
router.get('/insert', async(ctx) => {
let data = await DB.insert("user", { "username": "流浪", "age": "18", sex: "靚仔", "status": 1 })
ctx.body = '插入成功!!!'
});
router.get('/edit', async(ctx) => {
let data = await DB.update('user', { 'username': '趙六' }, { 'username': 'Alice' })
ctx.body = '修改成功!!!'
});
router.get('/delete', async(ctx) => {
let data = await DB.remove('user', { 'username': '嘿嘿' })
ctx.body = '刪除成功!!!'
});
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(3000)