Я использую Mongoose 3, и наиболее очевидным способом подключения к базе данных является
conn = mongoose.createConnection(...) conn.on("open", ...)
Вопрос в том, нужно ли мне определять все мои модели в открытом обратном вызове? Если это так, мне придется создать initMongoose.coffee
который выглядит как
# initMongoose.coffee mongoose = require "mongoose" module.exports = mongoose.createConnection ... # modelExample.coffee conn = require "./initDatabase" conn.on "open", -> ... define model? modeule.exports = model # I think this does not work?
Я думаю, что я где-то читал в документах Node, что модули не могут быть определены в обратном вызове?
Поскольку я использую только 1 соединение, я думаю, что могу использовать
mongoose.connect ...
Который не принимает никаких обратных вызовов, поэтому я предполагаю, что это синхронно? Могу ли я определить все мои модели и, следовательно, запросы сразу после connect()
? Он работает на данный момент, но может быть, потому что он достаточно быстро.
Mongoose буферизует команды до тех пор, пока не будет завершено соединение, поэтому вы можете относиться к нему так, как будто это синхронно, и определить ваши модели и начать использовать библиотеку, когда захотите; только после того, как вы хотите начать фактически вставлять или извлекать данные, вам необходимо установить соединение.