【问题标题】:How save data who pass through POST for a while如何保存一段时间通过POST的数据
【发布时间】:2020-04-13 03:02:38
【问题描述】:

我有一个来自数据库的产品列表,一切正常,但当有人按“购买”时我需要获取 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>

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

【问题讨论】:

    标签: javascript database express cookies ejs


    【解决方案1】:

    对于控制器:

    	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();
    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-20
      • 2012-12-04
      • 2020-04-16
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      相关资源
      最近更新 更多