Node Js глобальная переменная, показывающая неопределенное на странице показа - PullRequest
0 голосов
/ 16 апреля 2020

Я работал над проектом электронной коммерции, и теперь я добавляю в него корзину, поэтому у меня есть переменная корзины, которая определена глобально, и она отлично работает, когда я его консоль.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 } ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...