Я работал над проектом электронной коммерции, и теперь я добавляю в него корзину, поэтому у меня есть переменная корзины, которая определена глобально, и она отлично работает, когда я его консоль.log, но когда я go на cart.e js показать страницу, она показывает Cannot read property 'forEach' of undefined
, и это связано с тем, что переменная cart как-то не определена, потому что я переключил ее с другой моделью в базе данных, и forEach работал просто отлично ... здесь мой код:
в приложении. js
app.use(function(req, res, next){
res.locals.cart = req.session.cart;
next();
});
в корзине. js
var express = require("express"),
router = express.Router(),
Sandwich = require("../../models/sandwiches");
router.get("/pockit/menu/add/:id", function (req, res) {
var slug = req.params.id;
Sandwich.findOne({ slug: slug}, function (err, s) {
if (err) {
console.log(err)
}
if (typeof req.session.cart === "undefined"){
req.session.cart = [];
req.session.cart.push({
title: slug,
qty: 1,
price: 12,
});
} else {
var cart = req.session.cart;
var newItem = true;
for(var i = 0; i < cart.length; i++){
if(cart[i].title == slug){
cart[i].qty++;
newItem = false;
break;
}
}
if(newItem){
cart.push({
title: slug,
qty: 1,
price: 12,
});
}
}
console.log(req.session.cart);
res.redirect("back");
});
});
router.get("/pockit/basket", function(req,res){
res.render("pockit/cart", {
cart: req.session.cart,
})
});
module.exports = router;
в корзине. e js
<%- include("./partials/header") -%>
<table class="table table-striped">
<tr>
<th>Image</th>
<th>Title</th>
<th>Price</th>
<th>Quantity</th>
<th>Subtotal</th>
</tr>
<% cart.forEach(function(product){ %>
<tr>
<td><%= product.title %></td>
</tr>
<% }) %>
</table>
<link rel="stylesheet" href="/styles/cart.css">
что он показывает в console.log
[ { title: '5e971e979367622a50a58072', qty: 1, price: 12 } ]