mongodb의 DAO 계층 패키지

3465 단어
models에서db를 만듭니다.js
  • express 루트에 맞추어 조작 데이터의 삭제와 수정 검사를 하는 과정에서 몬godb의DAO층 봉인을 진행한다. 이 모듈은 데이터베이스에 대한 모든 상용 조작을 봉인한다.

  • 1.0 연결 데이터베이스
  • 연결 데이터베이스 주소 내보내기;여기는 데이터베이스 생성과 관련된다(luntan은 데이터베이스다)
  • //       ;     ,  ,       
    module.exports={
        "dburl":'mongodb://localhost:27017/luntan'
    }
    
    //          ,        ,  ,                 
    var MongoClient=require('mongodb').MongoClient;
    var settings=require('../setting');
    //     
    function _connectDB(callback) {
        var url=settings.dburl;// settings         ;
        MongoClient.connect(url,function (err,db) {
            console.log('     ');
            if(err){
                callback(err,null);
                return;
            }
            callback(err,db);
        })
    }
    

    init 데이터베이스 초기화
    //init         ;
    init();
    function init() {
        _connectDB(function (err,db) {
            if(err){
                console.log(err);
                return;
            }
            db.collection('users').createIndex(
                {"username":1},
                null,
                function (err,results) {
                    if(err){
                        console.log(err);
                        return;
                    }
                    console.log('      ')
                }
            )
        })
    }
    

    데이터 삽입 - 데이터베이스 닫기
    //    
    exports.insertOne=function (collectionName,json,callback) {
        _connectDB(function (err,db) {
            //          ;
            db.collection(collectionName).insertOne(json,function (err,result) {//       ,         
                callback(err,result);
                db.close();
            })
        })
    };
    

    데이터 찾기
    //    ,         
    //args   :1)   2)  
    exports.find=function (collectionName,json,args,callback) {
        if(arguments.length==3){
            callback=args;
            args={"page":0,"pageamount":0}
        }
        var result=[];//    ;
        var skip=args.page*args.pageamount;//   
        var limit=Number(args.pageamount);//     
        var sort=args.sort||{};
        _connectDB(function (err,db) {
            var cursor=db.collection(collectionName).find(json).limit(limit).skip(skip).sort(sort);
            cursor.each(function (err,doc) {
                if(err){
                    callback(err,null);
                    return;
                }
                if(doc != null){
                    result.push(doc);
                }else{
                    //    ,        
                    callback(null,result);
                    db.close();
                }
            })
        })
    };
    

    데이터 삭제
    //    
    exports.deleteMany=function (collectionName,json,callback) {
        _connectDB(function (err,db) {
            db.collection(collectionName).deleteMany(json,function (err,results) {
                callback(err,results);
                db.close();
            })
        })
    };
    

    데이터 수정
    //    ;json2       
    exports.updateMany=function (collectionName,json1,json2,callback) {
        _connectDB(function (err,db) {
            db.collection(collectionName).updateMany(json1,json2,function (err,results) {
                callback(err,results);
                db.close();
            })
        })
    };
    

    총 수량을 얻다
    //     
    exports.getAllCount=function (collectionName,callback) {
        _connectDB(function (err,db) {
            db.collection(collectionName).count({}).then(function (count) {
                callback(count);
                db.close();
            })
    
        })
    }
    

    좋은 웹페이지 즐겨찾기