Я использую Mon goose для управления схемами БД. Я сохраняю свои модели в нескольких местах в моем приложении. Мне интересно, следует ли мне вручную закрывать и повторно открывать соединение до и после каждого запроса соответственно? Я не уверен в последствиях для производительности.
Например, в этом createUser()
база данных подключается, сохраняет модель, а затем закрывает соединение. Это будет происходить каждый раз при вызове createUser()
.
function createUser() {
mongoose.connect(process.env.DB_PATH, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
const db = mongoose.connection
db.once("open", function () {
const userSchema = new mongoose.Schema({
name: String,
})
const UserModel = mongoose.model("User", userSchema)
const user = new UserModel({
name: "John",
})
user.save().then(() => {
mongoose.connection.close()
})
})
}
Или лучше просто сохранить соединение в точке входа приложения и закрыть его, если приложение завершает работу?
// server.js
mongoose.connect(process.env.DB_PATH, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
// ...
process.on('SIGINT', () => {
mongoose.connection.close(() => {
process.exit(0);
});
});
Мне также было бы любопытно узнать, изменится ли стратегия при использовании другого драйвера БД, скажем, MySQL?