【问题标题】:Create mongoose reference of models in differents files在不同文件中创建模型的猫鼬参考
【发布时间】:2015-11-29 15:03:20
【问题描述】:

我需要创建对不同文件中的 2 个模型的引用。我的模型是:

Profesor
Curso

我希望Curso 引用Profesor。我的问题是在创建模型Curso 时,模型Profesor 还不存在。

MissingSchemaError 模式尚未为模型 Profesor 注册

如果引用的是模型 Alumno 没有问题,因为 Alumno 是在 Curso 之前创建的,对吧?

【问题讨论】:

  • Alumno.server.model Curso.server.model Profesor.server.model User.server.model

标签: reference mongoose schema models


【解决方案1】:

只需先创建所有架构,然后注册模型。当你引导你的应用程序时,先做所有这些,然后再做其他事情。那你就不会有这样的问题了。文档中的一个示例,其中两个架构相互引用:

http://mongoosejs.com/docs/populate.html

var mongoose = require('mongoose')
  , Schema = mongoose.Schema

var personSchema = Schema({
  _id     : Number,
  name    : String,
  age     : Number,
  stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

var storySchema = Schema({
  _creator : { type: Number, ref: 'Person' },
  title    : String,
  fans     : [{ type: Number, ref: 'Person' }]
});

var Story  = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);

【讨论】:

  • 但我的问题是模式位于不同的文件中,并且在“教授”之前创建了“Curso”,因为 C
  • 我不明白为什么你的文件是按字母顺序加载的。在猫鼬应用程序中,我看到加载顺序是由需要这些文件的 require 语句的顺序定义的。所以,如果你首先需要你的教授文件,一切都应该没问题。你如何加载你的模型文件?
  • 好吧,我会检查一下require,看看它是如何加载文件的。我使用 Yeoman 生成器创建了这些文件,所以可能是按字母顺序添加的?感谢您的回答
  • 我发现了错误,我在不需要模型时对模型进行了要求,只需要参考的名称,而不是模型完整
猜你喜欢
  • 1970-01-01
  • 2015-01-14
  • 2013-01-25
  • 2015-03-16
  • 2022-12-10
  • 2016-11-02
  • 2014-02-13
  • 2020-04-07
  • 1970-01-01
相关资源
最近更新 更多