美文网首页
koa2.x学习2

koa2.x学习2

作者: kevin5979 | 来源:发表于2020-11-04 09:05 被阅读0次

封装 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)})

END

相关文章

  • koa2.x学习2

    封装 Koa 操作 Mongodb 数据库的 DB 类库 官方文档:http://mongodb.github.i...

  • koa2.x学习1

    Koa2.x学习 开发思路和 express 差不多,最大的特点就是可以避免异步嵌套 官网:http://kaoj...

  • koa2.x学习3

    Koa 应用生成器以及 Koa 路由模块化 Koa 应用生成器Koa 搭建模块化路由/层级路由 Koa 应用生成器...

  • Koa基础

    Koa2.x 四大对象 路由 参数传递 中间件 POST 静态服务 模板引擎 koa与ejs art-templa...

  • node读源码系列---koa2源码分析

    koa介绍 koa有1.x和2.x两个版本,koa1.x基于generator,依赖co的包装。koa2.x基于p...

  • 4.2 koa源码浅析

    本节将带着大家简单看一下koa2.x最新版本的源码。 源码结构 在上一章我们已经分享了查看依赖库源码的方法,本节我...

  • 基于koa2.x实现静态资源服务器

    详细很多人都看过阮一峰的 koa框架教程 , 非常通俗易懂的入门教程,但对于koa 框架的一些内部原理,特别是中间...

  • Dagger2学习笔记5(关于Lazy,Provide的使用)

    Dagger2学习笔记1(基础概念学习)Dagger2学习笔记2(学习Dagger2的简单使用)Dagger2学习...

  • Dagger2学习笔记4(@Singleton 与@ Scope

    Dagger2学习笔记1(基础概念学习)Dagger2学习笔记2(学习Dagger2的简单使用)Dagger2学习...

  • Qt5学习地址

    Qt 学习之路 2(1):序(Qt 学习之路 2(1):序) Qt 学习之路 2(2):Qt 简介(Qt 学习之路...

网友评论

      本文标题:koa2.x学习2

      本文链接:https://www.haomeiwen.com/subject/ximjcktx.html