美文网首页
mongodb的DAO层封装

mongodb的DAO层封装

作者: HowlEagle101Div | 来源:发表于2017-10-27 16:12 被阅读0次

在models下创建 db.js

  • 配合express路由,在操作数据的增删改查的过程中,来进行mongodb的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();
        })

    })
}

相关文章

  • mongodb的DAO层封装

    在models下创建 db.js 配合express路由,在操作数据的增删改查的过程中,来进行mongodb的DA...

  • mongodb的DAO层封装

    在models下创建 db.js 配合express路由,在操作数据的增删改查的过程中,来进行mongodb的DA...

  • 工程结构

    三大层: DAO层: DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO...

  • ssm介绍

    持久层:DAO层(mapper) DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装...

  • DAO层,Service层,Controller层、View层详

    1、Dao层 Dao层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,Dao层的设计首先是设计...

  • 项目中DAO层、Service层、Controller层、Vie

    DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DA...

  • MVC的dao层、service层和controller层

    1、dao层dao层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计da...

  • 办公系统

    报销流程 数据库设计 项目创建 包及全局配置 dao配置 biz配置 声明式事务需要配置在业务层 dao层封装为事...

  • hibernate的DAO层封装-分页

    1. 说明 上接[hibernate的dao层封装-基础功能] 2.设计思路 查询操作基本都要经过三步1.调用者发...

  • Web分层开发

    1.Dao层用于数据库访问,主要是结合PO将数据库数据转换成PO数据2.Service层基于Dao层进行封装业务逻...

网友评论

      本文标题:mongodb的DAO层封装

      本文链接:https://www.haomeiwen.com/subject/oifdpxtx.html