首页 > 代码库 > mongoose 数据库操作 - 分页
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); });
成天都在实现这种烂玩意,啥时候自己也搞一套牛逼的。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。