Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongoose无法读取具有复杂架构的未定义属性_Node.js_Mongodb_Mongoose_Schema - Fatal编程技术网

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; ..