前端

简单封装node.js的mongodb方法

2019-11-16  本文已影响0人  一个健康马

简单封装node.js的mongodb方法

const MongoClient = require("mongodb").MongoClient;

class Db {

    //单例模式

    static getMongoDb() {

        if (!Db.install) {

            Db.install = new Db()

        }

        return Db.install

    }

    constructor() {

            this.db = ""

            this.connect()

        }

        //链接

    connect() {

            let that = this;

            //关联本地mongo

            return new Promise((reslove, reject) => {

                if (!that.db) {

                    MongoClient.connect(

                        "mongodb://127.0.0.1:27017", { useNewUrlParser: true },

                        (err, client) => {

                            if (err) {

                                reject(err)

                                throw new TypeError(err)

                            }

                            //创建或使用数据库

                            that.db = client.db("cateye");

                            reslove(that.db)

                        }

                    )

                } else {

                    reslove(that.db)

                }

            })

        }

        //多条查询

    find(cName, obj, index = 1, size = 10) {

            const that = this;

            return new Promise((reslove, reject) => {

                that.connect().then(db => {

                    const result = db.collection(cName).find(obj).limit(size).skip((index - 1) * size)

                    result.toArray((err, doc) => {

                        if (err) {

                            reject(err)

                            throw new TypeError("find : " + err)

                        }

                        reslove(doc)

                    })

                })

            })

        }

        //增加

    insert(cName, obj) {

            const that = this;

            return new Promise((reslove, reject) => {

                that.connect().then(db => {

                    const result = db.collection(cName).insertOne(obj, (err, result) => {

                        if (err) {

                            reject(err)

                            throw new TypeError(err)

                        }

                        reslove(result)

                    })

                })

            })

        }

        //修改

    update() {

            const that = this;

            return new Promise((reslove, reject) => {

                that.connect().then(db => {

                    const result = db.collection(cName).updateOne(obj, (err, result) => {

                        if (err) {

                            reject(err)

                            throw new TypeError(err)

                        }

                        reslove(result)

                    })

                })

            })

        }

        //删除

    remove() {

            const that = this;

            return new Promise((reslove, reject) => {

                that.connect().then(db => {

                    const result = db.collection(cName).deleteOne(obj, (err, result) => {

                        if (err) {

                            reject(err)

                            throw new TypeError(err)

                        }

                        reslove(result)

                    })

                })

            })

        }

        //查询当前库的数据总量

    getCount(cName, obj) {

        const that = this;

        return new Promise((reslove, reject) => {

            that.connect().then(db => {

                const result = db.collection(cName).count(obj, (err, result) => {

                    if (err) {

                        reject(err)

                        throw new TypeError(err)

                    }

                    reslove(result)

                })

            })

        })

    }

}

module.exports = Db.getMongoDb()
上一篇 下一篇

猜你喜欢

热点阅读