在以下项目结构中,我有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);
}