Node.js Mongoose-无法使用子模型创建模型
我有一个模型和一些子模型,它们是通过父对象的ID链接的,但是我不能创建父对象,然后创建子对象,如果我以相反的方式创建,子对象将不会链接到任何对象 这是我的密码:Node.js Mongoose-无法使用子模型创建模型,node.js,mongodb,express,mongoose,database,Node.js,Mongodb,Express,Mongoose,Database,我有一个模型和一些子模型,它们是通过父对象的ID链接的,但是我不能创建父对象,然后创建子对象,如果我以相反的方式创建,子对象将不会链接到任何对象 这是我的密码: var mongoose = require('mongoose'); var personalDataSchema = new mongoose.Schema({ form_id : {type : mongoose.Schema.Types.ObjectId, ref : FormModel}, first_name :
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;
我想你可能在做相反的事情。如果您希望能够加载表单,然后让表单填充联系人数据和个人数据(作为表单的一部分),那么您应该创建如下表单架构:
var formSchema = new mongoose.Schema({
contactData: {
type: mongoose.Schema.Types.ObjectId,
ref: 'ContactData'
},
personaldata: {
type: mongoose.Schema.Types.ObjectId,
ref: 'PersonalData'
}
});
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);
}
});
然后,当您设计API控制器以加载表单时,您会使用如下内容:
var formSchema = new mongoose.Schema({
contactData: {
type: mongoose.Schema.Types.ObjectId,
ref: 'ContactData'
},
personaldata: {
type: mongoose.Schema.Types.ObjectId,
ref: 'PersonalData'
}
});
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);
}
});
根本不知道你在问什么。你预计会发生什么?MongoDB不是关系数据存储,因此没有用于引用完整性的内置处理。这应该是很清楚的,但你似乎希望这会以某种方式得到实施。也许你应该考虑使用错误的数据存储来实现你的期望。你试图使用PuxalDATA模型,而不是FrimMod。应该是
module.exports=PersonalData代码>,对吗?谢谢,这似乎起作用了。我不知道如何保存一个。1)创建一个ContactData文档并将其ID保存在变量中2)创建一个PersonalData文档并将其ID保存在变量中3)创建一个表单文档并将两个对象ID保存在适当的位置var Form=new FormModel({ContactData:contactDataID,PersonalData:personalDataID});save(函数(err,form){…dostuff…})代码>