mongoose-atlas-search
Version:
A customisable mongoose plugin to use MongoDB Atlas Search feature
32 lines • 1.44 kB
JavaScript
;
const utils_1 = require("./lib/utils");
const atlasSearchPlugin = {
initialize: (options) => {
const pluginOptions = (0, utils_1.validateOptions)(options);
const { model, searchKey, overwriteFind } = pluginOptions;
const find = model.find.bind(model);
const aggregation = model.aggregate.bind(model);
if (overwriteFind) {
model.find = function (query = {}, projection, queryOptions = {}) {
if (query[searchKey]) {
const aggregationQuery = (0, utils_1.buildAggregationQuery)(query, projection, queryOptions, pluginOptions);
return aggregation(aggregationQuery);
}
else
return queryOptions.useCursor
? find(query, projection, queryOptions).cursor()
: find(query, projection, queryOptions);
};
}
else {
model.search = function (query = {}, projection, queryOptions = {}) {
if (!query[searchKey])
throw new Error(`${searchKey} query param is required!`);
const aggregationQuery = (0, utils_1.buildAggregationQuery)(query, projection, queryOptions, pluginOptions);
return aggregation(aggregationQuery);
};
}
},
};
module.exports = atlasSearchPlugin;
//# sourceMappingURL=index.js.map