2015-04-28 2 views
1

Я новичок, когда дело доходит до среднего стека. Я создал пакет ModelA. Я также создал ModelB. Теперь я пытаюсь ссылаться на 2 модели в контроллере ModelA. напримерИспользование нескольких моделей в качестве одного контроллера MEAN.IO

Модель/ModelA.js

var ModelA = new Schema({ 
    name: String 
}); 

mongoose.model('ModelA', ModelA); 

Модель/ModelB.js

var ModelB = new Schema({ 
    name: String 
}); 

mongoose.model('ModelB', ModelB); 

пакет/Контроллер илит/ModelA.js

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

я получаю MissingSchemaError: Схема не было зарегистрировано для модели «ModelB». На мой вопрос, как я могу ссылаться на модель B в контроллере/ModelA?

+1

Вы не являетесь «требованием» к файлам Model/ModelA.js и Model/ModelB.js. Вы делаете это в другом месте? – JohnnyHK

+0

Я не видел, что требуется использовать для моделей в mean.io. Я просто использую node и express. Этот контроллер работает, если я просто прокомментирую строку 3. –

ответ

1

Вы, вероятно, хотите что-то вроде следующей:

Модели/ModelA.js

module.exports = mongoose.model('ModelA', ModelA); 

Тогда в любом другом файле:

var ModelA = require('./path/to/Model/ModelA.js'); 
ModelA.find({}); // etc. 

module.exports вернет вам свое значение, когда его require d в другом файле. Затем, когда вам нужен экземпляр/объект, вы можете назначить requirevar и действовать на него. В этом случае ModelA является объектом модели Mongoose, который может использоваться везде, где он включен.

Смежные вопросы