Node.js Mongoose无法读取具有复杂架构的未定义属性
我有以下用户模式:Node.js Mongoose无法读取具有复杂架构的未定义属性,node.js,mongodb,mongoose,schema,Node.js,Mongodb,Mongoose,Schema,我有以下用户模式: var mongoose = require('mongoose'); var userSchema = mongoose.Schema({ local: { email: String, password: String }, education: { school: { start: Boolean, name: String,
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)
您已经为保存req.user创建了变量
user.education.college.start
为此,应创建一个用户集合实例。为userschema创建一些实例。
例如,我假设userschema的集合名称为usercollection:
var userobj = new usercollection();
userobj.education.college.start = req.body.schoolStart; ..
希望这可能有用。实际上,这对我没有任何帮助,因为我使用passport对用户进行身份验证,因此我可以使用req.user从请求中检索用户。我的问题是我可以设置所有的学校属性,但不能设置大学属性
var userobj = new usercollection();
userobj.education.college.start = req.body.schoolStart; ..