Estoy construyendo una aplicación express. Tengo un menú desplegable cuyo valor enviado se pasa a users.js e inicia una consulta mongodb. Luego, el resultado de esa consulta se devuelve a ejs y se convierte en un argumento de una función de secuencia de comandos.
El problema es que quiero que se llame a esa función cuando haga clic en Enviar. (Me puedo permitir el retraso en la presentación de la página).
En este momento, tengo dos botones, uno para enviar y otro para llamar a esa función.
index2.ejs
<form action="/users/details" method="POST"> <fieldset> <select required class="selectpicker" name="selectpicker"> <!-- options --> </select> <input type="submit" id="submit-form" /> </fieldset> </form> <button onclick="popu(<%= JSON.stringify(coun) %>);">blue</button> y users.js
router.get("/index2", function(req, res, next) { (async function() { count = await funcoun(coll); // a mongodb query res.render("index2", {title: 'some data', userdataa: a, imgsrc : coll, coun : count}); }) (); }); router.post("/details", function(req, res, next) { coll = req.body.selectpicker; res.redirect("/users/index2"); }) Entonces, básicamente quiero que el formulario pase el valor (de coll) para expresar, calcular el count , llamar a la función con este valor y luego representar la página.
Actualmente, el cálculo del count se realiza sobre la base del valor anterior, y cuando se hace clic en el botón blue , se presenta el valor.
Estoy confundido de que si hago onclick en el botón Enviar, ¿qué hará, ya que el recuento aún no se ha calculado?
<body onload = "popu(<%= JSON.stringify(coun) %>);">resolvió el problema