UNPKG

mongoose-bread

Version:

A pagination and softdelete library for mongoose

48 lines (43 loc) 1.13 kB
const parseLeanFactory = require("./parseLeanFactory"); const toBreadErrorFactory = require("./toBreadErrorFactory"); /** * Factory function to create Model.read() method * @param {import('../index').MongooseBreadOptions} pluginOptions Config of mongoose-bread plugin */ function readFactory(pluginOptions) { const { docs, acknowledged, readCount } = pluginOptions.customLabels; const toBreadResult = (result) => ({ [docs]: [result], [acknowledged]: true, [readCount]: 1, }); const toBreadError = toBreadErrorFactory({ [docs]: [], [acknowledged]: false, [readCount]: 0, }); return function read(options) { const { customFind, query, projection, populate, select, sort, lean, limit, } = options; const parseLean = parseLeanFactory(options); return this[customFind](query, projection) .populate(populate) .select(select) .sort(sort) .lean(lean) .limit(limit) .orFail() .then(parseLean) .then(toBreadResult) .catch(toBreadError); }; } module.exports = readFactory;