从MEAN.IO中的其他包加载模型



在以下项目结构中,我有2个自定义MEAN之间的依赖关系。IO包

/自定义

  • package1
    • 服务器
        <
      • 控制器/gh><
      • 路线/gh>
      • 模型
        • model1.js
  • package2)
    • 服务器
        <
      • 控制器/gh><
      • 路线/gh>
      • 模型
        • model2.js

model1和model2都在它们自己的控制器中使用,但我想实现一个同时使用两者的算法。

我的第一个猜测是:

var Model2 = mongoose.model('Model2')

但是返回一个错误:

MissingSchemaError: Schema hasn't been registered for model "Model2".

我的第二个猜测是再次包括模型:

var model = require('../../../package2/server/models/model2'),
Meeting = mongoose.model('Meeting'), ...

仍然没有运气,有人知道如何包括模型从另一个包在mean.io?

你可以。

每个模型对象都由mongoose处理,由于mongoose是全局的,因此您可以调用它的模式。

您必须使用mongoose将您的模型添加到mongoose。模型(modelName、模式)

在你的model.js做

var mongoose  = require('mongoose'),
Schema    = mongoose.Schema,
crypto    = require('crypto'),
      _   = require('lodash');
var Model1Schema = new Schema({ ... });
mongoose.model('Model1', ModelSchema);
控制器中的

可以这样命名

var mongoose = require('mongoose'),
Model1 = mongoose.model('Model1'),
_ = require('lodash');

点击这里查看更多信息http://mongoosejs.com/docs/guide.html

似乎Model2还没有初始化到

var Model2 = mongoose.model('Model2')

被处决。我觉得很刻薄。io按字母顺序加载包,这就是Model1初始化期间没有加载Model2的原因。你能做的就是使用

mongoose.model('Model2')

在你的模型函数中反复出现,而不是把它放在一个变量中。

例如

Model1Schema.statics.findUsingModel2 = function(model2Id,cb){
    mongoose.model('Model2').find({_id : model2Id}).exec(cb);
}

相关内容

  • 没有找到相关文章

最新更新