Как получить динамический текущий путь в экспресс-маршрутизаторе - PullRequest
0 голосов
/ 14 марта 2019

router.get('/add/:id', (req, res, next) => {
        let productId = req.params.id;
        let cart = new Cart(req.session.cart ? req.session.cart : {});
        
        cart.addByOne(productId);
        req.session.cart = cart;
        
        // the path name below should be dynamic
        res.redirect('/shopping-cart');
        res.redirect('/checkout');
    });

router.get('/shopping-cart', (req, res, next) => {
    if(!req.session.cart) {
        return res.render('shopping-cart', {products: null});
    }
    let cart = new Cart(req.session.cart);
    res.render('shopping-cart', {products: cart.generateArray(), totalPrice: cart.totalPrice});
});

router.get('/checkout', isLoggedIn, (req, res, next) => {
    if (!req.session.cart) {
      return res.redirect('/shopping-cart');
    }

    let cart = new Cart(req.session.cart);
    res.render('checkout', {products: cart.generateArray(), total: cart.totalPrice});  
});

Имя перенаправленного пути должно быть динамическим, это означает, что если текущим локальным именем пути является, например, http://localhost:5002/shopping-cart, то должно быть res.redirect ('/ shopping-cart ');

Если имя локального хоста http://localhost:5002/checkout,, его следует изменить на res.redirect ('/ checkout') и т. Д.Есть ли способ изменить это динамически, и сохранить этот код в чистоте, насколько это возможно.Маршрутизаторы определены и файлы checkout.ejs и shopping-cart.ejs.

1 Ответ

0 голосов
/ 14 марта 2019

let currentUrl; 

router.get('/add/:id', (req, res, next) => {
    let productId = req.params.id;
    let cart = new Cart(req.session.cart ? req.session.cart : {});

    cart.addByOne(productId);
    req.session.cart = cart;
    res.redirect(currentUrl);
});

router.get('/shopping-cart', (req, res, next) => {
    if(!req.session.cart) {
        return res.render('shopping-cart', {products: null});
    }

    currentUrl = '/shopping-cart';

    let cart = new Cart(req.session.cart);
    res.render('shopping-cart', {products: cart.generateArray(), totalPrice: cart.totalPrice});
    console.log('shopping-cart' + url);
});

router.get('/checkout', isLoggedIn, (req, res, next) => {
    if (!req.session.cart) {
      return res.redirect('/shopping-cart');
    }

    currentUrl = '/checkout';

    let cart = new Cart(req.session.cart);
    res.render('checkout', {products: cart.generateArray(), total: cart.totalPrice});  
});

Создавая глобальную переменную с именем currentUrl, я сохраняю здесь текущее имя пути, поэтому каждый раз, когда маршрутизатор загружается, он будет искать новый обновленный currentUrl.

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