mongoose-bread
Version:
A pagination and softdelete library for mongoose
48 lines (43 loc) • 1.13 kB
JavaScript
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) => ({
[]: [result],
[]: true,
[]: 1,
});
const toBreadError = toBreadErrorFactory({
[]: [],
[]: false,
[]: 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;