Запись имеет название titlePhoto
, которое хранится в качестве массива строк [String]
. Пытаюсь выполнить поиск по неполному названию. Как правильно это сделать? Выдает ошибку photos is not defined
. Как и где объявить photos
? Объявляю, но выдает ошибку.
Форма поиска:
<form class="search-form" action="/search-form" method="post">
<input class="search-input" placeholder="Введите название" type="search" value="" name="search" id="inputSearch">
<label for="search" class="search-label">
<img src="/static/images/icons/search.svg">
</label>
</form>
обработчик-post
app.post('/search-form', function (req, res, next) {
var inputSearch = req.body.search;
Photo.aggregate([
{"$match": {
"titlePhoto": {"$regex": inputSearch, "$options":'i'}
}}
], function (err, photos) {
if(err){
return next(err);
}
});
res.render('index.ejs', {photoList: photos});
});
обработчик get
app.get('/', function (req, res) {
Promise.all([
Photo.find({}),
Sight.find({}),
Categories.find({})
]).then(function(data) {
res.render('index.ejs', {photoList: data[0], sights: data[1], categories: data[2], isAuth: req.isAuthenticated()});
} );
});
Нет 50 репы, что бы коммент писать.
Ошибка photos is not defined
потому что у вас эта переменная определена, как параметр в функции, а Вы пытаетесь использовать за пределами функции.
Если хотите за пределами - используйте замыкания, иначе перенесите res.render в тело функции
Вариант 1 (res.render в теле функции):
app.post('/search-form', function (req, res, next) {
var inputSearch = req.body.search;
Photo.aggregate([
{"$match": {
"titlePhoto": {"$regex": inputSearch, "$options":'i'}
}}
], function (err, photos) {
if(err){
return next(err);
}
res.render('index.ejs', {photoList: photos});
});
});
Вариант 2 (через замыкание):
app.post('/search-form', function (req, res, next) {
var inputSearch = req.body.search;
var _photos;
Photo.aggregate([
{"$match": {
"titlePhoto": {"$regex": inputSearch, "$options":'i'}
}}
], function (err, photos) {
if(err){
return next(err);
}
_photos = photos;
});
res.render('index.ejs', {photoList: this._photos});
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имеется input, который должен разделить имя и фамилиюДля этого я использую метод split
Подскажите пожалуйста новичку как правильно решить задачкуЕсть inputs при нажатии на которые мы получаем value 'red,blue
Внесу некоторые изменения в вопрос, опишу поподробнее
В модальном окне с 2 input формами подключен ajax запрос на перехват нажатия кнопки отправки и пост запросом передает данные в бдПроблема в том...