Я использую node.js с EJS для отображения списка продуктов. У каждого продукта есть форма с кнопкой, чтобы добавить ее в список желаний. Формы генерируются в цикле, и атрибут действия каждой формы правильно устанавливается в chaddtowishlist/:id.
Моя проблема заключается в том, что когда я нажимаю кнопку «Добавить в список желаний» на одном продукте, код на стороне сервера, кажется, получает запрос, который влияет на несколько продуктов вместо того, что я нажимал. Я подтвердил, что цикл EJS правильно отображает отдельную форму для каждого элемента.[*]
< /code>
node.js (Express) Маршрут: < /p>
app.post("/addToWishlist/:id", async (req, res) => {
const productId = parseInt(req.params.id, 10);
try {
// Check if the item already exists in the wishlist
const checkQuery = "SELECT * FROM wishlist WHERE product_id = $1 AND user_id = $2";
const existingItem = await db.query(checkQuery, [productId, req.user.id]);
if (existingItem.rowCount === 0) {
// Only insert if the item is not already in the wishlist
const insertQuery = "INSERT INTO wishlist (product_id, product_name, user_id) VALUES ($1, $2, $3)";
await db.query(insertQuery, [productId, 'Product Name', req.user.id]); // Note: Use product.name instead of productId
res.redirect('/success');
} else {
res.redirect('/already-in-wishlist');
}
} catch (err) {
console.error(err);
res.status(500).send("An error occurred.");
}
});
< /code>
Мой код на стороне сервера правильно получает идентификатор продукта в req.params.id. Что может вызвать это неожиданное поведение, когда нажатие на одну кнопку, кажется, запускает действие для нескольких элементов? Есть ли общая фронтальная проблема, которая может вызвать это с формами, генерируемыми в цикле? Я не использую какого -либо пользовательского JavaScript для обработки подчинения формы.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ne-clicked