Я создаю приложение, похожее на Yelp, используя MongoDB, Express, JS и Node.Поиском я смог найти, как искать несколько полей схемы кампуса (кампусы, рестораны, парикмахерские, название).Теперь я хочу уточнить поиск по местоположению (например, рестораны / бизнес в Лос-Анджелесе), и мне нужна помощь в этом.Вот что я пробовал до сих пор:
Я пробовал команды $ и / $ or для Mongo.Когда я просто использую $ или, я могу искать по имени или местоположению.
Маршрут
router.get("/campus", function(req, res){
var noMatch = null;
if(req.query.search){
const regex = new RegExp(escapeRegex(req.query.search), 'gi');
Campus.find({$and:[
{$or: [{name: regex}, {location:regex}, {food: regex},
{cost: regex}, {category:regex}]} ,
{$or: [{location: regex}]},
]},
function(err, allCampuses){
if(err){
console.log(err);
} else {
if(allCampuses.length < 1){
req.flash("error", "No campus match that search, please try
again.");
return res.redirect("back");
// noMatch = "No campus match that query, please try again.";
}
res.render("campus/index", {campus:allCampuses, currentUser:
req.user, noMatch: noMatch});
}
})
} else{
//get all campus from DB
Campus.find({}, function(err, allCampuses){
if(err){
console.log(err);
} else {
res.render("campuses/index", {campus:allCampuses, currentUser:
req.user, noMatch: noMatch});
}
})
}
})
HTML
<div class="container">
<header id="coverImage" class="jumbotron img-fluid">
<div class="container">
<h1>Welcome to CampusFinder</h1>
<p>View our hand-picked Campuses</p>
<p>
<a class="btn btn-primary btn-lrg" href="/bizs/new">Add New Campus</a>
</p>
<p>
<form action="/campuses" method="GET" class="form-inline">
<div class="form-group" >
<input type="text" name="search" placeholder="campuses
search" class="form-control">
<input type="submit" value="Search" class="btn btn default">
</div>
<div class="form-group">
<label for="location">Location</label>
<input class="form-control" type="text" name="location" id="location" placeholder="Florida">
</div>
</form>
</p>
</div>
</header>
Я ожидаю, что вывод будет работать как Yelp.Когда я выбираю местоположение и ищу кампус, кампусы этого города заполняются.