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.多表联动查询(研究中)

  • 相关阅读:
    ELK 收集 K8S (containerd 容器运行时) 二
    EFK 收集 Docker 日志
    ELK 收集 Docker 日志
    ELK 收集 K8S (containerd 容器运行时) 三
    Java 基础(Stream APl)
    Java 基础(方法引用 Method References)
    Java 基础(Lambda表达式 和 函数式 Functional 接口)
    Java 基础(Stream APl) 二
    ELK 收集 K8S (containerd 容器运行时) 一
    部署 Harbor 2.4.1
  • 原文地址:https://www.cnblogs.com/wylj/p/11338809.html
Copyright © 2011-2022 走看看