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