mongoose-simple-pagination
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

mongoose-simple-pagination

npm GitHub package.json version GitHub Workflow Status GitHub

Mongoose simple pagination plugin written specially for typescript and async purposes.

Why?

I created this package because I met typing problems in alternative libraries such as mongoose-paginate-v2. This package is for people who looking for typescript solution with typings.

Installation

npm i mongoose-simple-pagination

Usage

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

import { Document, model, Schema } from 'mongoose';

import { mongooseSimplePagination, PaginationModel } from 'mongoose-simple-pagination';

interface Product extends Document {
  // ...
}

const productSchema = new Schema<Product>(
  {
    // ...
  }
);

productSchema.plugin(mongoosePaginate);

export const ProductModel = model<Product, PaginationModel<Product>>(
  'Product',
  productSchema,
  'products'
);

(async () => {
  const pagination = await ProductModel.paginate();
  const products = pagination.documents; // Our products array.
  const hasNextPage = pagination.hasNextPage; // true.
})();

API

Model.paginate([filter], [options])

Returns promise

Parameters

  • [filter] {FilterQuery} - Filter query criteria. Documentation
  • [options] {Options}
    • [collation] {CollationDocument} - Specify the collation. Documentation
    • [lean=false] {boolean | any} - Should return plain javascript objects instead of Mongoose document object.
    • [page=1] {number}
    • [perPage=20] {number}
    • [populate] {string | PopulateOptions | PopulateOptions[]} - Paths which should be populated with other documents. Documentation
    • [projection=null] {any | null} - Get/set the query projection. Documentation
    • [queryOptions={}] {QueryOptions | null} - Query options passed to Mongoose's find() function. Documentation
    • [select=''] {string | any} - Fields to return (by default returns all fields) . Documentation
    • [sort=''] {string | any} - Sort order. Documentation

Return value

Promise fulfilled with Pagination object having properties:

  • documents {T[]} - Array of documents.
  • hasNextPage {bool} - Availability of next page.
  • hasPreviousPage {bool} - Availability of previous page.
  • nextPage {number} - Next page number if available or NULL.
  • page {number} - Current page number.
  • perPage {number} - Number of documents per page.
  • previousPage {number} - Previous page number if available or NULL.
  • totalDocuments {number} - Total number of documents in collection that match a query.
  • totalPages {number} - Total number of pages.

License

MIT

Package Sidebar

Install

npm i mongoose-simple-pagination

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

45 kB

Total Files

56

Last publish

Collaborators

  • avivharuzi