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。
发布于 2019-03-14 18:47:08
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。
https://stackoverflow.com/questions/55159907
复制相似问题