首页 > 解决方案 > 节点js中没有来自表单的请求

问题描述

我正在使用两种形式的 node js、express 和车把。第一种形式用于登录,第二种形式用于注册新用户。它们几乎相似,但第一个工作正常,第二个工作,不,我不知道为什么。

这是来自 register.hbr 的代码

        <div class="login-page">
  <div class="form">
    <form class="login-form" name="register" method="POST" action="/register_success">
      <input type="text" placeholder="email" required/>
      <input type="password" placeholder="password" required/>
      <input type="text" placeholder="nombre"/>
      <input type="submit" value="Crear cuenta" name="register_success"></input>
      <p class="message">Ya registrado? <a href="#">Entrar</a></p>
    </form>
  </div>
</div>

这是我在节点 js 中的路由器

rutas.post('/register_success', (req, resp)=>{
console.log(req.body);
const email = req.body.email;
const nombre = req.body.name;
const password = req.body.password;

firebase.auth().createUserWithEmailAndPassword(email, password).then(user=>{
    resp.send('Usuario creado con exito');
}).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    resp.render('loginError');
  });    
});

我的问题是请求始终为空,IDK 如何跟踪或查找问题。有什么帮助吗?

标签: node.jsexpresshandlebars.js

解决方案


为了在 Express 端点中处理表单数据,您需要一个能够提取此信息的中间件。有很多可用的,但最简单的方法是使用 body-parser。将此添加到定义应用程序的主文件中:

const bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true,
}));

如果将来您需要处理更复杂的表单,例如带有附件的表单,您很可能需要一个外部库,例如multer


推荐阅读