Reputation: 1310
All,
Trying to implement simple search with NodeJS and Mongoose.
Not really sure where do I go wrong, trying to build up the query like so:
const query = Post.find();
if (value.searchQuery && value.city && value.category) {
console.log("city and category");
query.where({
$or: [{ title: value.searchQuery }, { description: value.searchQuery }],
city: value.city,
category: value.category
});
} else if (value.searchQuery && value.city && !value.category) {
console.log("No category");
query.where({
$or: [{ title: value.searchQuery }, { description: value.searchQuery }],
city: value.city
});
} else if (value.searchQuery && value.category && !value.city) {
console.log("No city");
query.where({
$or: [{ title: value.searchQuery }, { description: value.searchQuery }],
category: value.category
});
} else if (value.searchQuery && !value.city && !value.category) {
console.log("No city and no category");
query.where({
$or: [{ title: value.searchQuery }, { description: value.searchQuery }]
});
Basically, what I have is search field, with city and category filters and user can either search by one field (city, category or searchQuery) or by all or just two.
P.s I'm relatively new to mongoose so take it easy ;)
Thank you!
Upvotes: 5
Views: 10449
Reputation: 1080
Please try this query
let regex = new RegExp(value.searchQuery,'i');
{ $and: [ { $or: [{title: regex },{description: regex}] }, {category: value.category}, {city:value.city} ] }
Upvotes: 11