【问题标题】:server doesn't seem to see the content of html form服务器似乎看不到 html 表单的内容
【发布时间】:2020-09-28 19:56:03
【问题描述】:

我的用户注册页面有这个表格:

<form action="/users" method="post">
    <input type="text" name="Ainm">
    <input type="text" name="Password">
    <input type="text" name="Email">
    <input type="submit" value="Submit">
</form>

对应的服务器文件有:

bodyParser = require('body-parser');
app.use(bodyParser.json());


//add new user - required fields = username, password, email
app.post('/users', function (req, res) {
    Users.findOne({ Ainm: req.body.Ainm })
      .then(function (user) {
        if (user) {
          return res.status(400).send(req.body.Ainm + " Name already in use.");
        } else {
          Users
            .create({
              Ainm: req.body.Ainm,
              Password:req.body.Password,
              Email: req.body.Email
            })
            .then(function (user) { res.status(201).json(user) })
            .catch(function (error) {
              console.error(error);
              res.status(500).send("Error: " + error);
            })
        }
      }).catch(function (error) {
        console.error(error);
        res.status(500).send("Error: " + error);
      });
  });

但是当我尝试输入一些测试数据时,我看到了

Undefined Name already in use.

为什么 Ainm 的值可能是未定义的?

谢谢。

【问题讨论】:

  • 您需要提供minimal reproducible example。我们看不到您是如何附加正文解析中间件的……您附加了任何正文解析中间件吗?
  • 我可能没有“附加”正文解析器。编辑了上面的代码,并将谷歌附加正文解析器。谢谢。

标签: html node.js mongodb express


【解决方案1】:
app.use(bodyParser.json());

这是你的问题。

表单数据未编码为 JSON。它将使用application/x-www-form-urlencoded 编码。

You need to use bodyParser.urlencoded().

【讨论】:

    【解决方案2】:

    您的代码中似乎没有 bodyparser 中间件(同时具有 urlencoded 和 json 以便将来使 API 通用)

    如果你使用低于 4.16 的 express,安装 body-parser

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

    express 的其他当前版本(4.16 及更高版本)带有内置的 bodyParser

    app.use(express.json())
    app.use(express.urlencoded({ extended: true })); 
    

    【讨论】:

    • json 正文解析器不会解析表单提交将包含的 URL 编码数据。
    猜你喜欢
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    相关资源
    最近更新 更多