Как отобразить элементы (значения объектов) массива в сеансе (node js и express, express -сессия) - PullRequest
0 голосов
/ 24 марта 2020

я сохраняю данные в моем сеансе, когда я нашел продукт в моей базе данных, например, такой:

const express = require('express');
const sessionPos = require('express-session'); 
const appPos = express();

appPos.use(sessionPos({secret: 'ssshhhhh',saveUninitialized: true,resave: true}));
var sess;

router.post('/searchProduct', function(req, res) {
    var query = { Code: req.body.searchInput };

   EventProduct.find(query ,function(err, products) {  
        if (err) throw err;

        var prod = {                  
             Name: products[0].Name,  //name of products
             Price: products[0].Price,   //price of products
             Avatar:  products[0].avatar,    //images of products
        };
      sess = req.session;   //intialize session
      tab.push(prod);    // create dynamically table 
      sess.searchInput=tab;   //add table to session  (name of table in session is  :searchInput)


      res.redirect('/pos');   //redirect to pos route where products are displaying 
});
});

На странице pos я хочу создать 3 массива Имени, Цены и изображения продуктов для отображения нас на pos страница, но я не знаю, как добавить имя продукта в массив "Таблица имен" ...

let nameTable = priceTable = ImageTable = [];   //initialise array's 
router.get('/pos', function(req, res) {
     sess= req.session; //initialize session
     console.log(sess.searchInput);    //display array of products 

          // what i want to do 
          // i want to do something like this :
          //    for (var i = 0; i < sess.searchInput.length; i++) {  //i can't access to length property
          //          let j = sess.searchInput[i].Name;
          //          nameTable.push(j);       // here i want to display ['addidas','Canon']
          //    }

          res.render('layouts/pos',{
                nameTable:nameTable          //send array table to pos.ejs page
          });
}

отображаемый массив:

[ { Name: 'adidas',
    Price: 9800,
    Avatar: 'avatar-1584883890430.png' },
  { Name: 'Canon',
    Price: 5000,
    Avatar: 'avatar-1585048244190.png' } ]

Мой код в поз.e js Страница, мне нужно al oop для отображения массива, но я не знаю, как это сделать

<ul>

            <% if( (nameTable) && (nameTable != "")  ){ %>

            <li class="item">

              <div><h3 class="name"><%= nameTable %></h3></div>

            </li>

            <%}%>
</ul>
...