Javascript TypeError:无法读取属性';用户名';表单提交中未定义的

Javascript TypeError:无法读取属性';用户名';表单提交中未定义的,javascript,angularjs,mongodb,express,mongoose,Javascript,Angularjs,Mongodb,Express,Mongoose,我有一个表单正在提交,但我无法将表单'req.body'用户名和密码属性分配给数据库(密码上没有散列,只是尝试让一个MEAN CRUD应用程序为初学者工作) 我的表格如下: 表格 <form action="/signup" method="post"> <input type="text" name="username" placeholder="Username" /> <input type="password" name="password"

我有一个表单正在提交,但我无法将表单'req.body'用户名和密码属性分配给数据库(密码上没有散列,只是尝试让一个MEAN CRUD应用程序为初学者工作)

我的表格如下:

表格

<form action="/signup" method="post">
    <input type="text" name="username" placeholder="Username" />
    <input type="password" name="password" placeholder="Password" />
    <button type="submit" value="Sign Up" />
</form>
app.js(仅显示对用户模型的引用和“/signup”帖子功能

var User = require("./models/user");
app.post("/signup", function(req, res) {
    var user = new User();
    user.username = req.body.username;
    user.password = req.body.password;
    user.save(function(err) {
        if (err) {
            res.send(err);
        }
        res.redirect("/profile", { message: 'User successfully registered!', data: user });
    });
});
运行应用程序时:

node app.js
一切正常。所有端点、路由都正常工作

但是,当我单击上述表单的提交按钮时,我在终端中收到以下错误:

TypeError: Cannot read property 'username' of undefined
    at Layer.handle [as handle_request](/node_modules/express/lib/router/layer.js:95:5)
    at next (/node_modules/express/lib/router/route.js:131:13)
    at Route.dispatch (/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/node_modules/express/lib/router/layer.js:95:5)
如何确保req.body.usernamereq.body.password成功传递到mongodb数据库


谢谢您的帮助。

以下是您需要做的事情

首先,安装主体解析器

$ npm install --save body-parser
然后在aap.js文件中

app.post('/', function(req, res){
  var username= req.param('username', null);  
  var username= req.param('password', null);  
});

这是你需要做的

首先,安装主体解析器

$ npm install --save body-parser
然后在aap.js文件中

app.post('/', function(req, res){
  var username= req.param('username', null);  
  var username= req.param('password', null);  
});

您是否在应用程序中启用了正文分析器?请确保您有以下行:

app.use(bodyParser.urlencoded({extended: false}));

您是否在应用程序中启用了正文分析器?请确保您有以下行:

app.use(bodyParser.urlencoded({extended: false}));

尝试打印请求正文控制台.log(req.body)尝试打印请求正文控制台.log(req.body)感谢您的建议,但由于某些原因,req.param属性似乎没有保存数据。我相信它仍然是req.body,来自正在发布的表单。让我使用额外的null参数尝试正文。感谢您的建议,但由于某些原因,req.param属性似乎没有保存数据。我相信仍然是req.body,来自正在发布的表单。让我使用附加的null参数尝试body。谢谢