mongoose – 不能用子模型创build模型

我有一个模型和一些子模型,它们通过父母的ID链接,但是我不能创build父母,然后创build孩子,如果我这样做,反过来,孩子们什么都不挂。

这是我的代码:

var mongoose = require('mongoose'); var personalDataSchema = new mongoose.Schema({ form_id : {type : mongoose.Schema.Types.ObjectId, ref : FormModel}, first_name : String, age : Number, gender : String, nationality: String, adress : String, birth_date : String, CNP : String }) var contactDataSchema = new mongoose.Schema({ form_id : {type : mongoose.Schema.Types.ObjectId, ref : FormModel}, phone : String, mail : String, facebook : String }) var formSchema = new mongoose.Schema({ _id : mongoose.Schema.Types.ObjectId }) var PersonalData = mongoose.model('PersonalData',personalDataSchema), ContactData = mongoose.model('ContactData',contactDataSchema), FormModel = mongoose.model('FormModel',formSchema); module.exports = FormModel; 

我想你可能正在做相反的事情。 如果你想能够加载一个表单,然后填充联系人数据和个人数据(作为表单的一部分),那么你应该像这样创build你的表单模式:

 var formSchema = new mongoose.Schema({ contactData: { type: mongoose.Schema.Types.ObjectId, ref: 'ContactData' }, personaldata: { type: mongoose.Schema.Types.ObjectId, ref: 'PersonalData' } }); 

然后,当你devise你的API控制器来加载一个表单,你会使用这样的东西:

 var id = req.params.id; // or get the id from somewhere FormModel.findById(id) .populate('contactData personalData') .exec(function(err, form) { if (err) { next(err); // assuming you have error handling middleware } else { res.json(form); } });