Мангуст соединение / модели: нужно всегда работать на открытом?

я использую Мангуст 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?

Я думаю, что читал где-то в узловых документах, что модули не могут быть определены в обратном вызове?


поскольку я использую только 1 соединение, я думаю, что могу использовать

mongoose.connect ...

, который не принимает любые обратные вызовы, я полагаю, синхронны? Могу ли я определить все мои модели и, следовательно, запросы сразу после connect()? Он работает на данный момент, но это может быть потому, что его достаточно быстро.

1 ответов


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