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

posted @ 2019-08-12 11:45  雾以泪聚rx  阅读(171)  评论(0编辑  收藏  举报