mongoose不保存正确的模式

我有一个小项目来向我介绍一些前端技术。 我使用Node,Express,Pug和MongoDB。

我在我的user.js文件中定义用户模式:

var userSchema = mongoose.Schema({ username : String, password : String, jobs : [{ type: mongoose.Schema.Types.Mixed }] }); 

然后,在我的passport.js文件中,我开始注册过程。

  User.findOne({ 'username' : username }, function(err, user) { // if there are any errors, return the error if (err) { console.log(err); return done(err); } // check to see if theres already a user with that email if (user) { console.log('user exists'); return done(null, false, req.flash('signupMessage', 'That username is already taken.')); } else { console.log('creating new user...'); // if there is no user with that email // create the user var newUser = new User(); newUser.username = username; newUser.password = newUser.generateHash(password); newUser.jobs = [{ website: 'google.com' }]; // save the user newUser.save(function(err) { if (err) { console.log(err); throw err; } console.log('user saved: ', newUser); return done(null, newUser); }); } }); 

该post成功地将新用户保存为:

 { "_id": { "$oid": "5967d2acc64d953330a3ac32" }, "__v": 0 } 

我的目标是在数据库中有一个数组,可以将网站链接推送到该用户的数组中。

感谢您的帮助。

将作业字段types设置为Mixed:

 var userSchema = mongoose.Schema({ local: { username : String, password : String }, jobs: [ { type: mongoose.Schema.Types.Mixed } ] }); 

然后创build用户将所有parameter passing给构造函数:

 var newUser = new User({ local: { username: username, password: User.generateHash(password), }, jobs: [{ website: 'google.com' }] }); // save the user newUser.save(function(err) { if (err) { console.log(err); throw err; } console.log('user saved: ', newUser); return done(null, newUser); }); 

你也可以创build用户而不先实例化它:

 // save the user User.create({ local: { username: username, password: User.generateHash(password), }, jobs: [{ website: 'google.com' }] }, function(err, newUser) { if (err) { console.log(err); throw err; } console.log('user saved: ', newUser); return done(null, newUser); }) 

对于这两种方法,您可能需要使generateHash成为一个静态方法 。