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
Node.js Mongoose-无法使用子模型创建模型_Node.js_Mongodb_Express_Mongoose_Database - Fatal编程技术网

Node.js Mongoose-无法使用子模型创建模型

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 :

我有一个模型和一些子模型,它们是通过父对象的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;

我想你可能在做相反的事情。如果您希望能够加载表单,然后让表单填充联系人数据和个人数据(作为表单的一部分),那么您应该创建如下表单架构:

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…})