博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongoose的分页功能
阅读量:5796 次
发布时间:2019-06-18

本文共 2984 字,大约阅读时间需要 9 分钟。

来自:

 

拷贝如下:

Note: This plugin will only work with Node.js >= 4.2 and Mongoose >= 4.2

Installation

npm install mongoose-paginate

Usage

Add plugin to a schema and then use model paginate method:

var mongoose = require('mongoose');

var mongoosePaginate = require('mongoose-paginate');

 

var schema = new mongoose.Schema({ /* schema definition */ });

schema.plugin(mongoosePaginate);

 

var Model = mongoose.model('Model', schema); // Model.paginate()

Model.paginate([query], [options], [callback])

Parameters

  • [query] {Object} - Query criteria. 
  • [options] {Object}
    • [select] {Object | String} - Fields to return (by default returns all fields). 
    • [sort] {Object | String} - Sort order. 
    • [populate] {Array | Object | String} - Paths which should be populated with other documents. 
    • [lean=false] {Boolean} - Should return plain javascript objects instead of Mongoose documents? 
    • [leanWithId=true] {Boolean} - If lean and leanWithId are true, adds id field with string representation of _idto every document
    • [offset=0] {Number} - Use offset or page to set skip position
    • [page=1] {Number}
    • [limit=10] {Number}
  • [callback(err, result)] - If specified the callback is called once pagination results are retrieved or when an error has occurred

Return value

Promise fulfilled with object having properties:

  • docs {Array} - Array of documents
  • total {Number} - Total number of documents in collection that match a query
  • limit {Number} - Limit that was used
  • [page] {Number} - Only if specified or default page/offset values were used
  • [pages] {Number} - Only if page specified or default page/offset values were used
  • [offset] {Number} - Only if specified or default page/offset values were used

Examples

Skip 20 documents and return 10 documents

Model.paginate({}, { page: 3, limit: 10 }, function(err, result) {

// result.docs

// result.total

// result.limit - 10

// result.page - 3

// result.pages

});

Or you can do the same with offset and limit:

Model.paginate({}, { offset: 20, limit: 10 }, function(err, result) {

// result.docs

// result.total

// result.limit - 10

// result.offset - 20

});

With promise:

Model.paginate({}, { offset: 20, limit: 10 }).then(function(result) {

// ...

});

More advanced example

var query = {};

var options = {

select: 'title date author',

sort: { date: -1 },

populate: 'author',

lean: true,

offset: 20,

limit: 10

};

 

Book.paginate(query, options).then(function(result) {

// ...

});

Zero limit

You can use limit=0 to get only metadata:

Model.paginate({}, { offset: 100, limit: 0 }).then(function(result) {

// result.docs - empty array

// result.total

// result.limit - 0

// result.offset - 100

});

Set custom default options for all queries

config.js:

var mongoosePaginate = require('mongoose-paginate');

 

mongoosePaginate.paginate.options = {

lean: true,

limit: 20

};

controller.js:

Model.paginate().then(function(result) {

// result.docs - array of plain javascript objects

// result.limit - 20

});

Tests

npm install

npm test

转载于:https://www.cnblogs.com/time-is-life/p/7776771.html

你可能感兴趣的文章
Cygwin/Git与Git Source Control Provider结合时初始目录
查看>>
python count()函数
查看>>
(重要) html概念之 input:name与id详解
查看>>
IIS日志分析
查看>>
java_小技巧
查看>>
mybaties 的 applicationContext.xml
查看>>
注解@RequestMapping value 用法
查看>>
一个简单的Inno Setup例子
查看>>
在ios端点击按钮闪烁解决方法(小tips)
查看>>
LeetCode-Search in Rotated Sorted Array
查看>>
Canvas之打字机游戏
查看>>
linux文件权限的设置命令
查看>>
DNS服务器搭建笔记
查看>>
SpringMVC 处理器执行链 (HandlerMapping)的执行过程
查看>>
P5161 WD与数列(后缀自动机+线段树合并)
查看>>
getComputedStyle与currentStyle获取样式(style/class)
查看>>
POJ 1738 An old Stone Game(石子合并)
查看>>
电梯调度程序4
查看>>
CentOS(五)--Oracle安装
查看>>
数学: HDU1098 Ignatius's puzzle
查看>>