我有一个包含一些子模式的用户模式。我有两个类似的子模式,其中一个被识别,但另一个未定义。 我的用户架构如下:
var UserSchema = new Schema({
company: String,
resetPasswordToken: String,
resetPasswordExpires: Date,
isAdmin: {type: Boolean, default: false},
projects: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Project",
}
],
trackers: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Tracker",
}
],
});
在上面的模式中,我的项目在后期路线中运行良好。表单会被发布,保存并正确显示,但跟踪器的相同路径无法发布,并且“跟踪器未定义”错误:
项目后路线:
app.post("/myprojects", function(req,res){
User.findById(req.user._id, function(err, user){
if(err){
console.log(err);
}else{
var pname = req.body.pname;
var pnumber = req.body.pnumber;
var newProject = {
pname:pname,
pnumber:pnumber,
};
Project.create(newProject, function(err, project){
if(err){
console.log(err);
}else{
user.projects.push(project);
user.save();
res.redirect("/myprojects");
}
});
}
});
});
这是跟踪帖:
app.post("/tracker", function(req,res){
User.findById(req.user._id, function(err, user){
if(err){
console.log(err);
}else{
var tname = req.body.tname;
var tnumber = req.body.tnumber;
var newTracker = {
tname:tname,
tnumber:tnumber,
};
Tracker.create(newTracker, function(err, tracker){
if(err){
console.log(err);
}else{
user.trackers.push(tracker);
user.save();
res.redirect("/tracker");
}
});
}
});
});
请注意,项目架构和跟踪器架构都保存在模型文件夹中,并且在app.js中是必需的
答案 0 :(得分:0)
它必须是undefined
,因为trackers
未保存在user
对象的数据库中。您可以使用以下方法解决问题。
user.trackers = user.trackers || [];
user.trackers.push(tracker);