UNPKG

nestjs-paginate-mongo

Version:

<p align="center"> <a href="https://www.npmjs.com/package/nestjs-paginate-mongo"><img src="https://img.shields.io/npm/dm/nestjs-paginate-mongo.svg" alt="Total Downloads"></a> <a href="https://www.npmjs.com/package/nestjs-paginate-mongo"><img src="http

36 lines (35 loc) 1.64 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.paginate = void 0; const lodash_1 = require("lodash"); const defaultOptions = { perPage: 10, page: 1 }; /** * Paginate a mongoose query result * @param query The query you want to paginate * @param options Pagination options like page number and/or items per page * @returns Paginated query with metadata */ const paginate = (query_1, ...args_1) => __awaiter(void 0, [query_1, ...args_1], void 0, function* (query, options = defaultOptions) { const _query = (0, lodash_1.clone)(query); const { perPage = 15, page = 1 } = options; const total = yield _query.countDocuments().exec(); const lastPage = Math.ceil(total / perPage); const data = yield query .limit(perPage) .skip(perPage * (page - 1)) .exec(); return { data, metadata: { total, perPage, page, lastPage }, }; }); exports.paginate = paginate;