Следует ли закрывать соединение Mon goose после каждого сохранения модели? - PullRequest
2 голосов
/ 04 мая 2020

Я использую 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?

1 Ответ

1 голос
/ 05 мая 2020

Согласно этой книге Пн goose Для разработки приложений

обычно рекомендуется открывать соединение при запуске приложения и оставлять его открытым. Однако бывают случаи, когда вам нужно закрыть соединение. Например, если ваше приложение завершает работу или перезапускается, соединение с базой данных необходимо закрыть вручную, или если вы запускаете сценарий с однократным обращением, а не постоянное приложение.

прочтите Параметры часть в mon goosejs документ о некоторых параметрах, которые вы можете установить в строке подключения.

И проверьте передовой опыт, чтобы подключиться к db тоже.

Согласно документам mon goose:

autoReconnect - Базовый драйвер MongoDB автоматически попытается повторно подключиться, когда он потеряет соединение с MongoDB. Если вы не являетесь чрезвычайно продвинутым пользователем, который хочет управлять своим собственным пулом подключений

Насколько мне известно, такого рода проблема зависит от масштаба вашего проекта.
Прочитав всю ссылку, вы придумаете товар для вашего проекта.

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