mongoose 数据库操作 - 分页


使用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);
});



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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值