封装 Koa 操作 Mongodb 数据库的 DB 类库
官方文档:http://mongodb.github.io/node-mongodb-native/
cnpm install mongodb --save
// 引入
const MongoClient = require('mongodb').MongoClient
// 连接地址
const dbUrl = 'mongodb://localhost:27017/'
// 定义操作的数据库名
const dbName = 'student'
// 连接数据库
MongoClient.connect(dbUrl,(err,client)=>{
if(err){
console.log(err)
return
}
const db = client.db(dbName)
// 增加数据
db.collection('user').insertOne({"username":"张三","age":18},(err,result)=>{
if(err){
console.log(err)
return
}
console.log("增加数据成功")
client.close()
})
})
// config.js
const app = {
dbUrl : 'mongodb://localhost:27017/',
dbName : 'student'
}
module.exports = app
// db.js db 库
const Mongo = require('mongodb')
const MongoClient = Mongo.MongoClient
const ObjectID = Mongo.ObjectID
const Config = require('./config.js')
class Db{
static getInstance(){ // 单例
if(!Db.instance){
Db.instance = new Db()
}
return Db.instance
}
constructor(){
this.dbClient = ''
this.connect()
}
// 连接数据库
connect(){
return new Promise((resolve,reject)=>{
if(!this.dbClient){ // 解决数据库多次连接的问题
MongoClient.connect(Config.dbUrl,(err,client)=>{
if(err){
reject(err)
}else{
const db = client.db(Config.dbName)
this.dbClient = db
resolve(this.dbClient)
}
})
}else{
resolve(this.dbClient)
}
})
}
find(collectionName,json){
return new Promise((resolve,reject)=>{
this.connect().then((db)=>{
const result = db.collection(collectionName).find(json)
result.toArray((err,docs)=>{
if(err){
reject(err)
}else{
resolve(docs)
}
})
})
})
}
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)
}
})
})
})
}
insert(collectionName,json){
return new Promise((resolve,reject)=>{
this.connect().then(db=>{
db.collection(collectionName).insertOne(json,(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)
}
})
})
})
}
getObjectID(id){
// mongodb 里面查询的 _id 转换成对象
return new ObjectID(id)
}
}
module.exports = Db.getInstance()
/******************************************/
const DB = require('./db.js')
//DB.find('user',{}).then((data)=>{
// console.log(data)
//})
const result = await DB.find('user',{})
console.log(result)
try{
if(data.result.ok){
// 跳转到首页
ctx.redirect('/')
}
}catch(err){
console.log(err)
ctx.redirect('/add')
}
let id = ctx.query.id
let data = await DB.find('user',{"_id":DB.getObjectID(id)})
![](https://img.haomeiwen.com/i20040970/bc020dfe2e86aedd.png)
网友评论