传统的写法/**

* Created by 黄森 on 2017/7/22.

*/var express = require('express');var app = express();var MongoClient = require('mongodb').MongoClient;

app.get('/',function (req,res) {    // Connection URL

var url = 'mongodb://localhost:27017/database';

MongoClient.connect(url, function(err, db) {        if(err){            console.log("数据库连接失败")

}        console.log("数据库连接成功");        //插入数据

db.collection('student').insertOne({            "name":"hahah",            "age":"100"

},function (err,result) {            console.log(result);

res.send("插入数据成功:"+result);

db.close();

});

});

});

app.listen(3000);

这样的话,我们可以看出用户在每次操作的时候,就要连接依次数据库,这样的话效率很低,所以我们把数据库的增删改查封装成一个 模块,这个模块命名为db.js

Dao层封装:db.js

1、引入mongodbvar MongoClient = require('mongodb').MongoClient;

2、连接数据库//连接数据路function _connectDB(callback) {    // Connection URL

var url = 'mongodb://localhost:27017/database';

MongoClient.connect(url, function (err, db) {        console.log("数据库连接成功");        if(err){

callback(err,null);            return;

}

callback(err, db);

});

}

3、封装方法插入数据// 插入数据exports.insertOne = function (collectionName, json, callback) {

_connectDB(function (err, db) {

db.collection(collectionName).insertOne(json, function (err, result) {

callback(err, result);

db.close();

})

})

};查找数据// 查找数据exports.find = function (collectionName, json, callback) {    var result = [];   //返回结果的数组

if (arguments.length != 3) {

callback("find接受三个参数", null);        return;

}

_connectDB(function (err, db) {        var cursor = db.collection(collectionName).find(json);

cursor.each(function (err, doc) {            if (err) {

callback(err, null);

db.close();                return;

}            if (doc != null) {

result.push(doc);   //放入结果数组中

} else {                //没有结果

callback(null, result);

db.close();

}

})

})

};分页查询

mongo在分页查询的时候是db.student.find().skip().limit();

find()就是查找的条件,skip()就是略过的条数,limit()就是读取的条数,limit和skip配合使用就是分页查询。

数据总数两种写法:db.student.find().count()db.student.stats().count;

比如:第一页是page=0。每页10条,所以当前页的查询语句:db.student.find({}).limit(10).skip(page*10)

所以分页查询封装好的函数就是如下所示:// 查找数据,args是一个对象{"pageamount":2,"page":page}exports.find = function (collectionName, json, C,D) {    var result = [];   //返回结果的数组

if (arguments.length == 3) {        var callback = C;        var skip = 0;        var limit = 0;

}else if(arguments.length==4){        var callback = D;        var args = C;        //应该省略的条数

var skip = args.pageamount*args.page||0;        //数目限制数

var limit = args.pageamount||0;       // 排序

var sort = args.sort||{}

}else{        throw new Error("find函数的参数必须是三个或四个");        return;

}

_connectDB(function (err, db) {       var cursor = db.collection(collectionName).find(json).skip(skip).limit(limit).sort(sort);

cursor.each(function (err, doc) {            if (err) {

callback(err, null);

db.close();                return;

}            if (doc != null) {

result.push(doc);   //放入结果数组中

} else {                //没有结果

callback(null, result);

db.close();

}

})

})

};

去调用的时候就是:app.get("/find",function (req,res) {    var page =parseInt(req.query.page);

db.find("student",{},{"pageamount":2,"page":page},{"sort":{"shijian":-1}},function (err,result) {       if(err){           console.log("查找失败")

}

res.send(result);

})

});修改数据//修改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.deleteMany = function (collectionName, json, callback) {

_connectDB(function (err, db) {

db.collection(collectionName).deleteMany(json, function (err, result) {

callback(result.length);

db.close();

})

})

};

作者:不要和我名字一样

链接:https://www.jianshu.com/p/61c99740561f

java分页封装到dao层,Node Dao层的封装与分页相关推荐

  1. 带分页功能的SSH整合,DAO层经典封装

    任何一个封装讲究的是,使用,多状态. Action: 任何一个Action继承分页有关参数类PageManage,自然考虑的到分页效果,我们必须定义下几个分页的参数.并根据这个参数进行查值. 然后在继 ...

  2. JAVA中Action层, Service层 ,model层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.model层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

  3. java action dao_java中Action层、Service层和Dao层的功能区分

    一.Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DA ...

  4. [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

  5. java系统项目分为哪五大层次?控制层_业务_一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转...

    表现层就是看到的东西,比如你现在看到的当前页面 控制层就将你的请求从页面传到后台代码 逻辑层就是处理你的请求的代码 DAO层就是将数据存到数据库中的代码 数据库就是数据库了,存东西用的 ,DAO层就是 ...

  6. java sdi接口是什么意思_JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

  7. 在 Java Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗

    作者 l 会点代码的大叔(CodeDaShu) 很多程序员在刚开始工作的时候,接触到的项目都是这样做的:项目的代码被分成 Controller.Service.Dao 层,一个接口对应一个实现类,然后 ...

  8. java domain层_java框架中的controller层、dao层、domain层、service层、view层

    1.Controller层:接口层,用户访问请求时对接. Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置 ...

  9. java dao层 service层_Java中DAO层、Service层和Controller层的区别

    DAO层: DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封 ...

最新文章

  1. 第9条:用生成器表达式来改写数据量较大的列表推导式
  2. BUUCTF-Reverse:[GKCTF2020]Check_1n
  3. CSS美化网页元素大全
  4. 学计算机的大一新生需要买电脑吗,大一新生到底是否需要买笔记本?学长说出真理,经验分享...
  5. python越学越糊涂_python 学习DAY03
  6. 《四世同堂》金句摘抄(三)
  7. 读取Excel文件数据
  8. (22)Vue.js 综合案例:TodoMVC
  9. CSS常用选择器简析(带简单案例)
  10. 全国30m精度二级分类土地利用数据
  11. 什么是客户管理系统?
  12. 安利一款倒计时插件---雨滴桌面
  13. HDU 1277全文检索(字典树)
  14. 实施定性风险分析-规划过程组
  15. 微信小程序设置页面全局背景色
  16. Python从Word/PPT/PDF中抽取图片
  17. 文本表示(一)—— word2vec(skip-gram CBOW) glove, transformer, BERT
  18. 企查查移动端技术总监李骁:以数据之力赋能企业信息服务平台的技术提效
  19. 网页链接跳转qq聊天界面以及QQ群是什么实现的
  20. 词法分析扫描器的设计实现

热门文章

  1. android提权system,Android push app to /system/app/
  2. ARCore-Unity3d教程3 - Unity Demo发布
  3. C#中的深度学习:Keras.NET中的硬币识别,第一部分
  4. 木兰编程语言重现——儿歌查询实例,引用模块、字符串列表操作
  5. .NET Core 3.0中的Cookie身份验证
  6. PostgreSQL 12 正式发布
  7. 应用挂载beegfs指定目录_BeeGFS源码分析1-元数据服务概要分析
  8. c语言4x4按键计算器代码,4X4按键实现计算器功能.doc
  9. 客户端更新功能实现_exlive1.0|监控客户端功能更新
  10. 多台电脑集群运算_一个分布式服务器集群架构方案