我有一个模型和一些子模型,它们是通过父母的ID链接的,但是我不能创建父项,然后是子项,如果我这样做,那么孩子就没有任何关联。
这是我的代码:
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;
答案 0 :(得分:1)
我想你可能会反过来这样做。如果您希望能够加载表单然后填充联系人数据和个人数据(作为表单的一部分),那么您应该像这样创建表单模式:
var formSchema = new mongoose.Schema({
contactData: {
type: mongoose.Schema.Types.ObjectId,
ref: 'ContactData'
},
personaldata: {
type: mongoose.Schema.Types.ObjectId,
ref: 'PersonalData'
}
});
然后,当您设计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);
}
});