Как сделать, чтобы пользователь передавал выбранные элементы в массив с помощью select?
Есть пустой массив. При выборе из select выбранный элемент должен добавляться в массив. Проблема в том, что это у меня работает, но добавляется только первый выбранный элемент, остальные - нет. Код из pug:
form(action="/cart/add" method="POST")
input(type="hidden" name="id" value= product.id)
select(name="size" required)
each size in product.sizes
option(value= size)= size
input(type="hidden" name="_csrf" value= csrf)
input.product__block-link(type="submit" value="Добавить в корзину")
Обработка этого запроса на сервере:
router.post('/add', auth, async(req, res) => {
try {
const product = await Product.findById(
req.body.id, req.body.title, req.body.nowPrice, req.body.mainSize,
req.body.article, req.body.sex
);
product.size = req.body.size;
await req.user.addToCart(product);
res.redirect('/cart');
} catch (e) {
console.log(e);
}
})
Метод addToCart:
user.methods.addToCart = function(product) {
const items = [...this.cart.items];
const idx = items.findIndex(p => {
return p.productId.toString() === product._id.toString()
})
if (idx >= 0) {
items[idx].count += 1;
} else {
items.push({
title: product.title,
price: product.nowPrice,
size: product.size,
sex: product.sex,
article: product.article,
productId: product._id,
count: 1
})
}
this.cart = { items };
return this.save();
}
В итоге при выборе например 'M' у меня он добавляется в массив, например захотел еще раз добавить тот же товар, но уже другой размер - он не добавляется, а в массиве остается только 'M'. Очень буду рад когда поможете.