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

  • 相关阅读:
    多线程
    JavaSE
    SpringBoot是什么,可以做什么?
    SSM框架中如何简便上传文件表单
    SQL语句全解,非常棒!
    关于HttpSession 和 Hibernate框架中 session异同点的简单解析
    关于Javascript中页面动态钟表的简单实现
    Java 面向对象 知识点基础浅谈
    Eclipse无法正常启动,弹出对话框内容为 A Java Runtime...
    关于Java中面向对象章节、IO 流中的重点基础知识。
  • 原文地址:https://www.cnblogs.com/wylj/p/11338809.html
Copyright © 2011-2022 走看看