TypeError:无法读取属性'用户名'来自Form Submit

时间:2016-11-01 17:47:11

标签: 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" placeholder="Password" />
    <button type="submit" value="Sign Up" />
</form>

用户架构(./models/user.js)

var mongoose = require("mongoose");

var UserSchema = new mongoose.Schema({
    username: String,
    password: String
});

module.exports = mongoose.model('User', UserSchema);

app.js(仅显示对用户模型的引用和&#34; /注册&#34;发布功能

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.username req.body.password 成功传递到mongodb数据库?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您是否在应用中启用了正文解析器?确保您具有以下行:

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

答案 1 :(得分:0)

这是你需要做的。

首先,安装body-parser

$ npm install --save body-parser

然后在你的aap.js文件中

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