使用mongoose 加入分页方法,临时还没发现什么更好的方法,我使用的方法是,直接在源代码中加入

找到 node_modules/mongoose/lib/model.js打开这个文件。里面加入这段代码

/**
* author:gtt
* updateTime:2014-5-3
*/
Model.execPageQuery = function find (currentPage,pageSize, conditions, fields, options, callback) {
if ('function' == typeof conditions) {
callback = conditions;
conditions = {};
fields = null;
options = null;
} else if ('function' == typeof fields) {
callback = fields;
fields = null;
options = null;
} else if ('function' == typeof options) {
callback = options;
options = null;
}
//var countLine = 20;// 总行数
//var countPage = (countLine + pageSize-1 )/pageSize;// 总页数
var StartLine = (currentPage -1)*pageSize;
var m = this;
async.parallel([
function(cb) {
m.count({},cb);
},
function(cb) {
if ('function' == typeof conditions) {
m.find({}).limit(pageSize).skip(StartLine).exec(cb);
} else if ('function' == typeof fields) {
m.find(conditions).limit(pageSize).skip(StartLine).exec(cb);
} else if ('function' == typeof options) {
m.find(conditions,fields).limit(pageSize).skip(StartLine).exec(cb);
}else{
m.find(conditions,fields,options).limit(pageSize).skip(StartLine).exec(cb);
}
}
], function(err,rs){ var page = {};//总页数 总条数 集合
if('number' == typeof rs[0]){
page.total = rs[0];
page.rows = rs[1];
}else{
page.total = rs[1];
page.rows = rs[2];
}
callback(err,page);
});
}

调用方法:

var assert = require('assert')
var util=require('util');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = mongoose.Types.ObjectId; mongoose.connect('mongodb://localhost:8888/test');
mongoose.connection.on('error', function() {
console.error('connection error', arguments);
}); var PersonSchema = new Schema({
name : String
}); var Person = mongoose.model('Person', PersonSchema,'Person'); Person.execPageQuery(1,100,function(err,rel){
console.dir(rel);
});

成天都在实现这样的烂玩意,啥时候自己也搞一套牛逼的。

mongoose 数据库操作 - 分页的更多相关文章

  1. [ Laravel 5.6 文档 ]laravel数据库操作分页(自定义分页实现和自定义分页样式)

    简介 在其他框架中,分页可能是件非常痛苦的事,Laravel 让这件事变得简单.易于上手.Laravel 的分页器与查询构建器和 Eloquent ORM 集成在一起,并开箱提供方便的.易于使用的.基 ...

  2. mongoose 数据库操作2

     mongoose的内置的主要功能解说 除了定义文档结构和你要存储的数据类型外.模式(Schema)还用于下面定义: ·        Validators (异步和同步) ·        Defa ...

  3. mongoose 数据库操作3

    Model.find(query, fields, options, callback) Model.find({ 'some.value': 5 }, function (err, docs) { ...

  4. oracle--序列&视图&索引&视图&可视化操作&分页&数据库备份

    --oracle学习内容--oracle的管理系统学习--oracle的数据管理学习--oracle的用户管理--oracle二维表管理--oracle的其他知识 --oracle的序列.视图.索引 ...

  5. java操作数据库:分页查询

    直接上.... 还是用之前的goods表,增加了一些数据 1.实体类Goods // 封装数据 public class Goods { private int gid; private String ...

  6. [js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)

    该系列文章索引: [js高手之路]node js系列课程-创建简易web服务器与文件读写 [js高手之路]node js系列课程-图解express+supervisor+ejs用法 [js高手之路] ...

  7. phpcms v9 中的数据库操作函数

    1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='')   返回 ...

  8. C# ACCESS数据库操作类

    这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下! usi ...

  9. phpcms v9 数据库操作函数

    表明默认当前load_model('xxxx')模块所在表名xxxx 若要指定表名  则:操作在mysql.class.php中$this->db->select(...) 1.查询  $ ...

随机推荐

  1. powerdesigner数据建模

    目标: 本文主要介绍PowerDesigner中概念数据模型 CDM的基本概念.一.概念数据模型概述数据模型是现实世界中数据特征的抽象.数据模型应该满足三个方面的要求:1)能够比较真实地模拟现实世界2 ...

  2. 分析php获取客户端ip

    用php能获取客户端ip,这个大家都知道,代码如下: /** * 获取客户端ip * @param number $type * @return string */ function getClien ...

  3. Mac OS使用技巧之十五:快捷方便的Mini Dock

    Mini Dock是前面忘记了提,这里做一些补充.       Mini Dock是Mac OSX的一个值得大书特书的亮点.尽管windows下也有类似的东西,但Mac下却提供了更为全面的功能.通过M ...

  4. 解决shell脚本中 echo 怎么写入换行到文件

    測试环境:ubuntu12.04 LTS版本号 echo >> file.txt就可以, 这样的方法对于脚本开头是bash和sh效果都一样, 而echo -e >> file. ...

  5. SRM 585

    250 : 递推,从左下角到右下角走一条,剩下的都是子结构 const int mod = 1000000007; long long dp[1000010] , s[1000010]; class ...

  6. AS3 Post 参数和ByteArray的方法及服务器端接收

    as端: (form表单形式)req.method = URLRequestMethod.POST; var reqHeader:URLRequestHeader = new URLRequestHe ...

  7. [译]Stairway to Integration Services Level 14 - 项目转换(SSIS 2008 ~ SSIS 2012)

    介绍 本文中我们会用SSDT把第一个SSIS项目转换为 SSIS 2012, 为什么要升级到2012? 你可能想使用SSIS 2012新的特性. 又或者想使用 SSIS 2012 Catalog. 想 ...

  8. [译]SSIS 通过环境变量配置数据源连接参数

    场景 希望在包执行的时候可以随意选择参数,这时候我们可以用环境变量 . 另外所有包都可以用环境变量,有大量包的时候就比较方便. Step 1: 创建SSIS包 在Data Flow Task里面创建 ...

  9. 高级UNIX环境编程10 信号

    信号是软件中断,提供一种处理异步事件的方法 <signal.h> sigaction()

  10. [Android文档翻译]设备兼容性

    原文地址:Device Compatibility Android设计于运行在多种不同类型的设备上,从手机.平板到电视.作为一名开发者,设备的涵盖范围为你的app提供了广大的潜在用户.为了让你的app ...