尝试将表单元素保存到mongoDB时,无法读取未定义错误的属性

时间:2015-08-31 19:33:32

标签: javascript node.js mongodb express mongoose

我提交表单时收到此错误:

  

无法读取未定义

的属性'firstName'

先谢谢你们/ gals :)。

////// NODE CODE //////
var MyUser = mongoose.model( 'users' , { name: String } );

app.post( '/user' , function ( req, res ) {
    var User = new MyUser( {
        name: req.body.firstName
    })
    .save( function ( err, doc ) {
        err ? res.send( err ) : res.redirect( '/' );
    });  
});


/////// MARKUP /////
<form method="POST" action="/user">
    <label>First Name</label>
    <input type="text" name="firstName" /> 
    <button>Submit</button>
</form>

1 个答案:

答案 0 :(得分:3)

问题在于您没有定义好的架构

var MyUser = mongoose.model( 'users' , { name: String } );

您只是传递一个简单的对象作为第二个参数,需要是一个 Schema实例。

所以它会像

var userSchema = new mongoose.Schema({
  name: String 
});
var MyUser = mongoose.model( 'users' , userSchema );

这也有效:

var MyUser = mongoose.model( 'users' , new mongoose.Schema({name: String}));

Here are some documentation on how to define a mongoose model