добавить в корзину маршрут node.js - PullRequest
2 голосов
/ 16 апреля 2020

я хочу добавить в свою корзину в приложении node.js express, но без необходимости перефразировать sh или перенаправлять по маршруту. Есть ли способ сделать это? это маршрут функции «добавить в корзину»:

router.get('/add-to-cart/:id/:pices', function(req, res) {
  var pices = req.params.pices;
  var productId = req.params.id;

  var cart = new Cart(req.session.cart ? req.session.cart : { });

  Product.findById(productId, function (err, product) {
    if (err) {
      return res.redirect('/');
    }
    cart.add(product, product._id, pices);
    req.session.cart = cart;
    res.redirect('/products');
  });
});

, как вы можете видеть, я перенаправляю на ('/ products') каждый раз, когда добавляю товар в корзину. Есть ли способ обойти это так, чтобы страница не refre sh каждый раз?

спасибо!

1 Ответ

1 голос
/ 16 апреля 2020

Это проблема не бэкэнда, а внешнего интерфейса. Я предполагаю, что вы используете элемент формы с action, установленным для этой конечной точки.

То, что вы ищете, это AJAX с fetch . Не совсем уверен в дизайне вашего интерфейса, но я дам ему предположение:

На интерфейсе в сценарии:

  • Получить yourForm
  • Добавить submit прослушиватель событий
  • Запретить событие по умолчанию (перенаправление)
  • Отправить запрос на получение к конечной точке
  • Разобрать его {credentials: "include"}, чтобы бэкэнд узнал, чья корзина добавить в. (отправляет данные сеанса)
yourForm.addEventListener("submit", async function (ev) {
    ev.preventDefault();
    await fetch(ev.target.getAttribute("action"), {credentials: "include"});
});

(также для этого типа действия вы можете использовать HTTP-запрос на публикацию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...