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
21 lines (20 loc) • 876 B
JavaScript
function buildSearch(strings = [],obj) {
if (strings.length === 0) return;
if(strings.length === 1) {
const key = strings[0].key
obj.inputs[key] = { tag: 'input', type: 'search', name: key }
obj.validators[key] = (v,search) => { if(v) search[key] = { $regex: String(v), $options: 'i' } }
} else {
obj.validators.search = (v, search,query) => {
search.$or = strings.map(({ key }) => {
return v === '' || query[key] === 'false' ? null : {[key]:{ $regex: String(v), $options: 'i' }}
}).filter(Boolean)
}
const keys = strings.map(({key}) => {
obj.validators[key] = () => {}
return { tag: 'input', type: 'checkbox', name: key, checked:true }
})
obj.inputs.search = { tag: 'input', type: 'search', name: 'search', keys }
}
}
module.exports = buildSearch