Mongoose无法读取具有复杂模式的未定义属性
我有以下用户架构:
var mongoose = require('mongoose'); var userSchema = mongoose.Schema({ local: { email: String, password: String }, education: { school: { start: Boolean, name: String, graduationYear: String }, college: { start: Boolean, name: String, career: String, enterYear: String, graduationYear: String } } });
现在,当我提交包含所有这些信息的表单时,我的应用程序将POST请求路由到以下函数:
exports.postEditEducation = function (req, res){ process.nextTick(function (){ var user = req.user; user.education.school.start = req.body.schoolStart; user.education.school.name = req.body.schoolName; user.education.school.graduationYear = req.body.graduationYear; user.education.college.start = req.body.collegeStart; user.education.college.name = req.body.collegeName; user.education.college.career = req.body.collegeCareer; user.education.college.enterYear = req.body.collegeEnterYear; user.education.college.graduationYear = req.body.collegeGraduationYear; user.save(function (err){ if (err) throw err; res.redirect('/profile'); }); }); };
但是,当我提交信息时出现以下错误:
user.education.college.start = req.body.collegeStart; ^ TypeError: Cannot set property 'start' of undefined at /file.js:464:46 at process._tickCallback (node.js:419:13)
var user = req.user;
你已经为保存req.user创build了variables
user.education.college.start
要做到这一点,你应该创build一个用户集合实例。 为userschema创build一些实例。 例如,我假设userschema的集合名称为usercollection:
var userobj = new usercollection(); userobj.education.college.start = req.body.schoolStart; ..
希望这可能是有用的。