如何保存通过POST的数据

问题描述 投票:0回答:1

我有一个来自数据库的产品清单,所有产品都可以正常工作,但是当有人按下“购买”时,我需要获取ID我尝试抓住de req.body,但无法保存。

我尝试使用SessionStorage和LocalStorage,但无法正常工作。

	carritoForm: (req, res) =>  {
		
		
		let obj = JSON.parse(JSON.stringify(req.body)); // req.body = [Object: null prototype] { title: 'product' }
		console.log(obj)
		res.redirect('index');
}	
<div class="container">
  <div class="row">
    <div class="col-sm-12 col-md-12 col-lg-12 bloques">
      <p>Incendios</p>
      <div class="imagen">
        <a href="" target="_blank"><img src="../images/fire.png" alt="" /></a>
      </div>
      <br>
      <p>Lorem ipsum dolor sit amet consectetur adipiscing elit elementum eget congue, tristique sollicitudin enim eu
        nisi ultrices iaculis justo scelerisque, phasellus vestibulum metus rhoncus sapien a integer odio ligula.
        Senectus parturient maecenas conubia netus pharetra felis placerat tincidunt, tortor fusce cras ligula nostra
        cursus augue duis lacinia, nascetur semper a habitasse euismod inceptos vivamus. Sociosqu ante neque morbi
        pulvinar habitasse enim himenaeos, ultrices per orci molestie nisi fames dignissim praesent, lacus iaculis class
        cursus mollis eros.</p>
    </div>

  </div>
  <div class="container">
    <div class="row">
      <br>
      <%  products.filter(function (el) { %>
      <%   return (el.prdCategId === 3); %>
      <% }).map(function(el) { %>
      <br>
      <div class="col-sm-12 col-md-12 col-lg-12 lista-productos">

        <div class="col-sm-4 col-md-4 imgcart">
          <img src="/images/prdImages/<%= el.image %>" alt="">
        </div>
        <br>
        <div class="col-sm-8 col-md-8 agregar-carrito">
          <br>
          <b>Descripcion:</b> <%=  el.description %> <br>
          <b>Precio: $</b> <%=  el.price %> <br> <br>
          
          <form name= 'compras' action="/products/incendios" method="POST" >
            <button name="incendios" value="<%=  el.id %>" type="submit">Buy</button>
          </form>
          <br>

          <br>
        </div>
      </div>

      <% }).sort(); %>

    </div>
  </div>
  
</div>

当我按下'Comprar'输出是正确的'{incendios:'2'}',与我按下的按钮匹配,但是我不知道如何保存。

enter image description here

javascript database express cookies ejs
1个回答
0
投票

对于控制器:

	if (req.cookies.compra!=undefined) {
			console.log('Pisando datos')
			let contenidoCookie = JSON.parse(req.cookies.compra);  // Convierto el array en string para poder pushearle cosas
			contenidoCookie.push(req.body.item); // Le metés a ese array que recuperaste el contenido nuevo
			console.log(contenidoCookie)
			res.cookie('compra', JSON.stringify(contenidoCookie), { maxAge: (1000 * 60) * 10 }); // Volvés a setear la cookie
		} else {
			console.log('Creando datos por primera vez')
			let contenidoCookie =  [req.body.item]
			res.cookie('compra', JSON.stringify(contenidoCookie), { maxAge: (1000 * 60) * 10 }); // Seteo la cookie para que nunca mas sea undefined
		  }

对于中间件:

function carrito(req, res, next) {
    let cookie = req.cookies.compra
    if(cookie != null) {
        console.log('La cookie ya existe')
    } else {
         // Crear la cookie
		let array=[];
		res.cookie('compra', JSON.stringify(array), { maxAge: (1000 * 60) * 5 });
		console.log('La Cookie fue creada')
	}
    next();
}
© www.soinside.com 2019 - 2024. All rights reserved.