2013-07-22 3 views
0

Я видел несколько шаблонов node.js, которые автоматически загружают файлы моделей, используя «require()» несколькими различными способами. Я использую «var variable_name = require (« app/models/model.js ») и Model = require (« app/models/model.js »), но мне интересно, как использовать модель, когда требуется, как это:Необходимые методы использования

require('app/models/model.js') 

Давайте предположим, что model.js имеет атрибут "имя" и метод ".save()"

Как эта модель может быть использована

ответ

1

Если вы не знаете.? присвойте объект, возвращенный из запроса, вы не сможете получить к нему доступ позже. Вот несколько примеров с примечаниями:

Это будет работать код верхнего уровня, но не сохранить ссылку на объект модуля

require('app/models/model.js') 

Это будет работать код верхнего уровня, и вы получите один экземпляр (обратите внимание, я предполагаю, что model.js экспортирует функцию конструктора как это было бы распространено в противоположность свойствам name и save, которые вы описываете напрямую, что, я думаю, маловероятно, что на самом деле существует).

var myModel = new require('app/models/model.js') 

Это сохранит конструктор модели, чтобы вы могли сделать столько раз, сколько вам нужно.

var Model = require('app/models/model.js') 
+0

и что этот код должен делать? 'fs.readdirSync (__ dirname + '/app/models').forEach(function (file) { if (~ file.indexOf ('. js ')) require (__ dirname +'/app/models/'+ file) }) 'Как вы видите, модели загружаются без переменной назначения. Это модели мангустов. – Endymion

+0

Это похоже на загрузку всех моделей. Мое единственное предположение - предварительно кэшировать их, чтобы последующие вызовы 'require' уже загружали их. Это почти наверняка глупая и безоговорочная преждевременная оптимизация, но у меня нет полного контекста, чтобы действительно сказать. –

+0

Я отредактировал комментарий после вашего ответа. Полный контекст - это код в app.js, это модели mongoose. – Endymion

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