Я считаю, что соединения сделаны в момент запроса происходит. Sequelize не поддерживает связь с базой данных. Если соединение падает и возвращается, и запрос был выпущен в течение того времени, соединение не может быть выполнено, запрос завершится с ошибкой. Я думаю, что я потратил бы время на решение проблемы надежности базы данных, а не на другие варианты, которые означают больше кода, но это мое мнение.
Вы должны думать о define() как способе настройки таблиц на db в блоке dev во время запуска вашего приложения. В идеале, определение следует делать только один раз. Вы можете вызывать определение столько раз, сколько хотите, но я считаю, что состояние таблицы будет «последним определением выигрышей вызова». в зависимости от вашей конфигурации, define также сделает DROP/CREATE вашей таблицы, поэтому вы хотите убедиться, что вы понимаете, когда и почему определяется, что вызов вызван.
Вы должны вызвать синхронизацию, чтобы сохранить свои определения или убедиться, что они присутствуют в существующей db. вы определенно не хотите называть его несколько раз, и ваша ссылка на экземпляр sequelize должна быть одиночной.
Конечно, вы можете делать все, что вы хотите в разработчика, но с точки зрения ведения sequelize в производственном типа настройки, вы, вероятно, не хотите синхронизировать для запуска ЛЮБЫХ определяет, и вместо того, чтобы просто проверить, что модель ожидает, что существующий в определениях соответствует существующей схеме, а синхронизация должна вызываться только один раз, когда-либо, и ее результат должен использоваться как экземпляр singleton.