const Mongo = require('mongodb');
const MongoClient = Mongo.MongoClient;
const ObjectID = Mongo.ObjectID;
const Config = require('./config.js');
class DB {
? static getInstance(){
? ? if(!DB.instance){
? ? ? DB.instance = new DB();
? ? }
? ? return DB.instance;
? }
? constructor() {
? ? this.dbClient = '';
? ? this.connect()
? }
? connect(){? ? // 連接數(shù)據(jù)庫
? ? return new Promise((resolve, reject)=>{
? ? ? if(!this.dbClient){
? ? ? ? MongoClient.connect(Config.url, (err, client)=>{
? ? ? ? ? if(err){
? ? ? ? ? ? console.log(err);
? ? ? ? ? ? reject(err);
? ? ? ? ? } else {
? ? ? ? ? ? let db = client.db(Config.dbName);
? ? ? ? ? ? this.dbClient = db;
? ? ? ? ? ? resolve(this.dbClient);
? ? ? ? ? }
? ? ? ? })
? ? ? } else {
? ? ? ? resolve(this.dbClient);
? ? ? }
? ? })
? }
? find(collecter, json){
? ? return new Promise((resolve, reject)=>{
? ? ? this.connect().then((db)=>{
? ? ? ? let res = db.collection(collecter).find(json);
? ? ? ? res.toArray((err, result)=>{
? ? ? ? ? if(err){
? ? ? ? ? ? ? reject(err);
? ? ? ? ? } else {
? ? ? ? ? ? resolve(result);
? ? ? ? ? }
? ? ? ? })
? ? ? })
? ? })
? }
? insert(collecter, json){
? ? return new Promise((resolve, reject)=>{
? ? ? this.connect().then((db)=>{
? ? ? ? db.collection(collecter).insertOne(json, (err, res)=>{
? ? ? ? ? if(err){
? ? ? ? ? ? reject(err);
? ? ? ? ? } else {
? ? ? ? ? ? resolve(res)
? ? ? ? ? }
? ? ? ? })
? ? ? })
? ? })
? }
? update(collecter,wherejson,updatejson){
? ? return new Promise((resolve, reject)=>{
? ? ? this.connect().then((db)=>{
? ? ? ? db.collection(collecter).updateOne(wherejson, {$set: updatejson}, (err, res)=>{
? ? ? ? ? if(err){
? ? ? ? ? ? reject(err);
? ? ? ? ? } else {
? ? ? ? ? ? resolve(res);
? ? ? ? ? }
? ? ? ? })
? ? ? })
? ? })
? }
? delete(collecter, json){
? ? return new Promise((resolve, reject)=>{
? ? ? this.connect().then((db)=>{
? ? ? ? db.collection(collecter).deleteOne(json, (err, res)=>{
? ? ? ? ? if(err){
? ? ? ? ? ? reject(err);
? ? ? ? ? } else {
? ? ? ? ? ? resolve(res);
? ? ? ? ? }
? ? ? ? })
? ? ? })
? ? })
? }
? getObjectId(id){
? ? return new ObjectID(id);
? }
}
module.exports = DB.getInstance();