首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在express路由器中获取动态电流路径

如何在express路由器中获取动态电流路径
EN

Stack Overflow用户
提问于 2019-03-14 18:15:41
回答 1查看 113关注 0票数 0

代码语言:javascript
复制
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});  
});

重定向的路径名应该是动态的,这意味着如果当前本地路径名是例如购物车应该是res.redirect(‘/ http://localhost:5002/shopping-cart -cart’);

如果本地主机名为http://localhost:5002/checkout,则应将其更改为res.redirect('/checkout'),依此类推。有没有办法动态地改变这一点,并尽可能保持代码的整洁。路由器已定义,并且文件checkout.ejs和shopping cart.ejs。

EN

回答 1

Stack Overflow用户

发布于 2019-03-14 18:47:08

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55159907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档