简单封装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()