mongodb官方提供的 crud API
var MongoDB = require('mongodb')
var MongoClient = MongoDB.MongoClient
const objectID = MongoDB.objectID
const config = {
dbUrl = 'mongodb://localhost:27017',
dbName = 'koa'
}
es6 封裝mongo
class Db{
static getInstance(){ // 此靜態(tài)方法用于判斷是否連接 mongodb 數(shù)據(jù)庫(kù),避免重新連接數(shù)據(jù)庫(kù)
if(!Db.instance){
Db.instance=new Db();
}
return Db.instance;
}
constructor(){
this.dbClient='';
this.connect();
}
// 連接數(shù)據(jù)庫(kù)
connect(){
let _that = this;
return new Promise((resolve,reject)=>{
if(!_that.dbClient){
MongoClient.connect(Config.dbUrl,(err,client)=>{
if(err){
reject(err)
}else{
_that.dbClient=client.db(Config.dbName);
resolve(_that.dbClient)
}
})
}else{
resolve(_that.dbClient);
}
})
}
// 查詢數(shù)據(jù)庫(kù)
/**
@param collectionName 表名
@param json 查找的對(duì)象
*/
find(collectionName,json){
return new Promise((resolve,reject)=>{
this.connect().then((db)=>{
var result=db.collection(collectionName).find(json);
result.toArray(function(err,docs){
if(err){
reject(err);
return;
}
resolve(docs);
})
})
})
}
// 更新數(shù)據(jù)
/**
@param collectionName 表名
@param json1 需要更新的對(duì)象
@param json2 更新的對(duì)象
*/
update(collectionName,json1,json2){
return new Promise((resolve,reject)=>{
this.connect().then((db)=>{
//db.user.update({},{$set:{}})
db.collection(collectionName).updateOne(json1,{
$set:json2
},(err,result)=>{
if(err){
reject(err);
}else{
resolve(result);
}
})
})
})
}
insert(collectionName,json){
return new Promise((resolve,reject)=>{
this.connect().then((db)=>{
db.collection(collectionName).insertOne(json,function(err,result){
if(err){
reject(err);
}else{
resolve(result);
}
})
})
})
}
remove(collectionName,json){
return new Promise((resolve,reject)=>{
this.connect().then((db)=>{
db.collection(collectionName).removeOne(json,function(err,result){
if(err){
reject(err);
}else{
resolve(result);
}
})
})
})
}
getObjectId(id){
return new ObjectID(id);
}
}