Как правильно выложить Mongoose в проекте Express? - PullRequest
3 голосов
/ 14 сентября 2011

Я создал свои Schema в моем models/mymodel.js файле.У меня также есть мои модели и методы.

Как мне экспортировать их в мои routes?

Ответы [ 2 ]

5 голосов
/ 14 сентября 2011
// route.js
var mongoose = require("mongoose");

var Posts = mongoose.model("posts")
...

Убедитесь, что вы настроили механизм начальной загрузки, который запускает все файлы вашей модели.Как только это будет сделано, вы должны были вызвать mongoose.model("name", Model) для набора моделей.

Это кэшировало эти модели внутри Мангуста.Таким образом, вы можете просто позвонить mongoose.model("name") куда угодно.

Единственное, что важно, это порядок выполнения.Модель и схемы должны быть зарегистрированы до запуска ваших маршрутов.

Это так просто:

// create app
var app = express.createServer(...);
// do stuff with app

var files = fs.readdirSync("models");
files.forEach(function(file) {
  require("models/" + file);
});

var routes = fs.readdirSync("routes");
routes.forEach(function(route) {
  require("routes/" + route)(app);
});

app.listen(80);

Обратите внимание, что обычно readdirSync это зло, но можно блокироватьзвонки во время запуска (например, require) перед прослушиванием вашего сервера

1 голос
/ 16 октября 2012

Mongoose создает синглтон, когда вы require() его, и последующие вызовы возвращают тот же экземпляр.

Так что, пока вам потребуется mongoose, когда вы запускаете приложение, затем определите ваши модели, они будут доступны в любом другом файле, где вам нужен mongoose, как описано Raynos.

Если вы не хотите управлять подключениями к серверу базы данных вручную, также неплохо бы вызвать mongoose.connect('...') в init вашего приложения; соединение будет сохраняться между запросами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...