Я создал несколько раскрывающихся меню, чтобы пользователи могли фильтровать поиск по городам, спальням и ванным комнатам. Форма возвратит все данные, которые относятся к поиску пользователя. Функция поиска, функция BedroomSearch и bathroomSearch будут обрабатывать всю фильтрацию поиска. По какой-то странной причине я продолжаю получать сообщение об ошибке «ReferenceError: req не определено». Как мне заставить мой фильтр работать?
form.e js
<form action="/homes" method="GET" class="filter-form">
<select name="search" id="form-city">
<option value="" disabled selected>Search by City</option>
<option value="New York">New York</option>
<option value="CA">California</option>
<option value="MI">Michigan</option>
<option value="Hawaii">Hawaii</option>
</select>
<select name="bed">
<option value="3 Beds">3 Beds</option>
<option value="5 Beds">5 Beds</option>
<option value="6 Beds">6 Beds</option>
<option value="8 Beds">8 Beds</option>
</select>
<select name="bath">
<option value="" disabled selected>Bathrooms</option>
<option value="New York">New York</option>
<option value=" 3.5 baths"> 3.5 baths</option>
<option value="5 baths"> 5 baths</option>
<option value="6 baths"> 6 baths</option>
</select>
<input type="submit" value="SEARCH" class="site-btn fs-submit">
</form>
house. js
router.get("/", function(req, res){
//function to search by city
search();
//function to search by bedrooms
bedroomSearch();
//function to search by bathrooms
bathroomSearch()
});
//search functions
function citySearch() {
var noMatch = null;
if(req.query.search) {
const regex = new RegExp(escapeRegex(req.query.search), 'gi');
// Get all homes from DB
Home.find({city: regex}, function(err, allHomes){
if(err){
console.log(err);
} else {
if(allHomes.length < 1) {
noMatch = "No homes match that query, please try again.";
}
res.render("homes/index",{homes:allHomes, noMatch: noMatch});
}
});
} else {
// Get all homes from DB
Home.find({}, function(err, allHomes){
if(err){
console.log(err);
} else {
res.render("homes/index",{homes:allHomes, noMatch: noMatch});
}
});
}
}
// end of city search function
function bedroomSearch() {
var noMatch = null;
if(req.query.bed) {
const regexBed = new RegExp(escapeRegex(req.query.bed), 'gi');
// Get all homes from DB
Home.find({bedrooms: regexBed}, function(err, allHomes){
if(err){
console.log(err);
} else {
if(allHomes.length < 1) {
noMatch = "No homes match that query, please try again.";
}
res.render("homes/index",{homes:allHomes, noMatch: noMatch});
}
});
} else {
// Get all homes from DB
Home.find({}, function(err, allHomes){
if(err){
console.log(err);
} else {
res.render("homes/index",{homes:allHomes, noMatch: noMatch});
}
});
}
}
//end of bed function
function bathroomSearch() {
var noMatch = null;
if(req.query.bath) {
const regexBath = new RegExp(escapeRegex(req.query.bath), 'gi');
// Get all homes from DB
Home.find({bathrooms: regexBath}, function(err, allHomes){
if(err){
console.log(err);
} else {
if(allHomes.length < 1) {
noMatch = "No homes match that query, please try again.";
}
res.render("homes/index",{homes:allHomes, noMatch: noMatch});
}
});
} else {
// Get all homes from DB
Home.find({}, function(err, allHomes){
if(err){
console.log(err);
} else {
res.render("homes/index",{homes:allHomes, noMatch: noMatch});
}
});
}
}
//end of bathroom function
// For form
function escapeRegex(text) {
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
};