als-mongo-list
Version:
A flexible, lightweight MongoDB query utility for Node.js applications. Simplifies database operations with intuitive filtering, pagination, sorting, and field selection. Ideal for REST API endpoints, providing a primary List class that abstracts complex
19 lines (15 loc) • 833 B
JavaScript
function isValidNumber(v, search, subKey, key, { min, max, step }) {
v = Number(v)
if (isNaN(v) || (min !== undefined && v < min) || (max !== undefined && v > max)) return
if (step !== undefined && (v * (1 / step)) % 1 !== 0) return;
if (!search[key]) search[key] = {};
search[key][subKey] = v
};
function number(key, item, obj) {
const { min, max, step } = item
obj.validators[`${key}_gte`] = (v, search) => isValidNumber(v, search, '$gte', key, item);
obj.validators[`${key}_lte`] = (v, search) => isValidNumber(v, search, '$lte', key, item);
obj.inputs[`${key}_gte`] = { tag: 'input', type: 'number', name: `${key}_gte`, min, max, step }
obj.inputs[`${key}_lte`] = { tag: 'input', type: 'number', name: `${key}_lte`, min, max, step }
}
module.exports = { number, isValidNumber }