zoukankan      html  css  js  c++  java
  • 记学习node使用mongoDB

    1.先解决多次实例不共享的问题

    static getInstance () { // 解决多次实例不共享的问题
        if (!DB.instance) {
            DB.instance = new DB()
        }
        return DB.instance
    }
    constructor () {
        this.dbClient = "" //放db对象
        this.connect() // 实例化的时候就连接数据库
    }

    2.连接数据库

      connect () {
            return new Promise((resolve, reject) => {
                if (!this.dbClient) { // 解决数据库多次连接
                    MongoClient.connect(Config.dbUrl, (err, client) => {
                        if (err) {
                            reject(err)
                        } else {
                            this.dbClient = client.db(Config.dbName)
                            resolve(this.dbClient)
                        }
                    })
                } else {
                    resolve(this.dbClient)
                }
            })
        }

    3.常用操作

      1.格式化_id

        getObjectId (id) { // mongo里面查询_id
            return new objectId(id)
        }

      2.单表查询

      find (collectionName, json, sort) {
            return new Promise ((resolve, reject) => {
                this.connect().then((db) => {
                    var res = db.collection(collectionName).find(json).sort(sort)
                    res.toArray((err, doc) => {
                        if (err) {
                            reject(err)
                            return
                        }
                        resolve(doc)
                        // console.log(doc)
                    })
                })
            })
        }

      3.单表单条更新

        update (collectionName, json1, json2) {
            return new Promise ((resolve, reject) => {
                this.connect().then((db) => {
                    // })
                    db.collection(collectionName).updateOne(json1, {
                        $set: json2
                    }, (err, res) => {
                        if (err) {
                            reject(err)
                        } else {
                            resolve(res)
                        }
                    })
                })
            })
        }

      4.单表单条插入

      

        insertOne (collectionName, json) {
            return new Promise ((resolve, reject) => {
                this.connect().then((db) => {
                    db.collection(collectionName).insertOne(json, (err, res) => {
                        if (err) {
                            reject(err)
                        } else {
                            resolve(res)
                        }
                    })
                })
            })
        }

      5.单表单条删除

        remove (collection, json) {
            return new Promise ((resolve, reject) => {
                this.connect().then((db) => {
                    db.collection(collectionName).removeOne(json, (err, res) => {
                        if (err) {
                            reject(err)
                        } else {
                            resolve(res)
                        }
                    })
                })
            })
        }

      6.多表联动查询(研究中)

  • 相关阅读:
    UML--->用例图梳理
    UML--->活动图梳理
    论懂产品对程序员的重要性
    markdown时序图语法
    bootstrap 设置表格固定宽度 内容换行
    gitlab的本地搭建和部署使用
    layer.load的使用
    git fatal: remote origin already exists. 报错解决
    导出csv xls文件数字会自动变科学计数法的解决方式
    git常用命令
  • 原文地址:https://www.cnblogs.com/wylj/p/11338809.html
Copyright © 2011-2022 走看看