无法读取未定义的属性“用户名”-JavaScript

时间:2019-12-20 17:33:23

标签: javascript amazon-web-services server request postman

我正在尝试使用Postman Application发送帖子,我的Js代码实际上是我将在此处发布的代码,它代表POST。 我的要求是:

{

    "username" : "UserAbc",
    "password" : "password"
}

错误是我在标题中写的错误。有任何想法吗?谢谢!


    app.post('/register', (req, res) => {
      const username = req.body.username;
      const password = req.body.password;

      if (!username || !password) {
        res.json({
          error: 'Missing required parameters'
        });
        return;
      }

      let user = new User({
        username: username,
        password: password,
      })
        user.save();

      let tokenKey = uuidv1();
      let newToken = new Token({
        token: tokenKey,
        expire: ~~(Date.now() / 1000) + 3600 * 24,
      })
      newToken.save();

      res.status(200).send({ token: tokenKey });
    });

3 个答案:

答案 0 :(得分:2)

它看起来像在: const username = req.body.username;

req不包含body

尝试以下代码行,看看您的错误是否消失了。 const username = (req.body || {}).username;

这不是解决方案,而是一种查看是否出问题的方法。如果您的错误变为其他错误,则说明已找到问题。

答案 1 :(得分:1)

基于该错误,看来您没有使用人体分析中间件,您将必须执行以下操作:

app.use(express.json());

以便在请求对象上设置body属性。

More details

答案 2 :(得分:1)

似乎您的POST数据未在服务器上解析。

可能有两个原因。

  1. 确保您具有诸如expressjs/body-parser之类的正文解析器。

    运行npm install body-parser之后,然后在代码中,您需要在所有使用req.body的路由之前将其添加到

    const bodyParser = require('body-parser');
    
    app.use(bodyParser.json())
    
  2. 如果您已经有一个正文分析器,则在Postman中,没有将body mime-type设置为application/json,请确保将类型设置为JSON: Setting body type to JSON