КОНТЕКСТ
Я пытаюсь создать функцию поиска, позволяющую пользователям заполнять несколько полей, отправлять и просматривать список совпадающих элементов из одной коллекции. Я делаю это с помощью формы на внешнем интерфейсе, которая обновляет переменные сеанса на бэкэнде, которые затем передаются как запрос в коллекцию mongodb.
КАК ЭТО ДОЛЖНО РАБОТАТЬ
Если пользователь указывает размер места, то отображаются места этого размера. Если вводится только местоположение, то отображаются места в пределах этого местоположения. Если указаны и размер, и местоположение, то отображаются места, соответствующие обоим критериям.
КАК ЭТО НА САМОМ ДЕЛЕ РАБОТАЕТ
Если ничего не заполнено, при нажатии на поиск будут показаны все элементы коллекции. Указав как местоположение, так и размер, вы получите места, соответствующие обоим критериям. Однако заполнение только одного поля и оставление другого пустым не дает никаких результатов. Мне интересно, почему это может быть - это почти так, как будто запрос ищет поле, которое буквально содержит ''... но тогда почему я не вижу этого поведения, когда оставляю оба поля пустыми? Помощь очень ценится!
ФРАГМЕНТ КОДА
//Search Form Helper
Template.managevenues.helpers({
venue: function () {
var venueNameVar = Session.get('venueNameVar');
var venueLocationVar = Session.get('venueLocationVar');
if(venueNameVar || venueLocationVar){
console.log(venueNameVar);
console.log(venueLocationVar);
return Venues.find({
venueName: venueNameVar,
'venueAddress.neighbourhood': venueLocationVar
});
} else {
return Venues.find({});
}
});