Нужно взять с url, то что написал в input
Проблема в том, что req.params.title это "search", а нужно то, что написал в input
form в pug:
form.header__block-search-content(action="/search" method="GET")
span.header-search-word Поиск
input.header-search.header-search-show(type="text" name="text")
ее обработка:
router.get('/:title', async(req, res) => {
const title = req.params.title;
const products = await Product.find({ title })
.select('nowPrice oldPrice sale sizes img mainSize description sex article accessories');
res.render('shop', {
title: `Ryc-store ${title}`,
products: products,
isShop: true
});
})
Ответы (2 шт):
Автор решения: Serj1c
→ Ссылка
то что в input можно достать через onChange и event.target.value примерно таким образом (пример из синтаксиса react, но и на vanilla js можно переложить):
<Input
type='email'
placeholder='Введите email'
id='email'
value={props.email}
onChange={(e) => props.onChange(e.target.value)}
/>
ответ достоин, разве что, комментария, но у меня кармы не хватает
Автор решения: nörbörnën
→ Ссылка
const express = require('express');
const app = express();
app.post('/search', (req, res) => {
const { text } = req.query;
console.log(`[search] ${text}`);
res.json({ok: true});
});
app.get('/search/:title', (req, res) => {
const { title } = req.params;
console.log(`[search] ${title}`);
res.json({ok: true});
});
app.listen(3003, 'localhost');
Первый роут правильно обработает вашу форму, а вот для того, чтобы сработал роут с именованным параметром, нужно сделать такой запрос:
curl 'http://localhost:3003/search/карамба'