Почему все модели примеров Sequelize созданы с помощью Model (sequelize, Sequelize)?

Взгляните на определение models / blog.js в этом Продолжить учебник.

module.exports = (sequelize, type) => {
    return sequelize.define('blog', {
        id: {
          type: type.INTEGER,
          primaryKey: true,
          autoIncrement: true
        },
        text: type.STRING
    })
}

Он называется так:

const BlogModel = require('./models/blog');
const sequelize = new Sequelize('codementor', 'root', 'root', {...});
const Blog = BlogModel(sequelize, Sequelize);

Я просмотрел еще много примеров Sequelize и обнаружил "шаблон" Модель (продолжение, продолжение), вероятно, по крайней мере, в 90% из них. Как будто все они прямо или косвенно происходят из какого-то действительно плохого примера кода, потому что ...

Мне это кажется ужасным. Есть две переменные, которые различаются только регистром. Одна из них - это библиотека Sequelize, другая - что-то вроде сеанса или соединения (не знаю, какой термин используется в Sequelize). Я считаю, что наличие переменных в верхнем регистре является нарушением правил кодирования. Затем ссылка на библиотеку передается в другой файл, в котором нет необходимости в Node, поскольку модули требует кэшируются при первой загрузке. Так почему бы просто не сослаться на Sequelize напрямую в файлах модели и передать только объект продолжение?

Кто-нибудь видит веские причины для этого? Более чистый способ IMO сделать это описан в этом SO сообщение. Престижность ответчику. Мне просто интересно, не упускает ли я здесь что-то очевидное, что я действительно должен делаю это таким образом, или я могу написать более чистый код?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
0
427
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это действительно уродливо. Что я делаю, так это создаю базу данных в собственном файле и экспортирую ее.

const db = new Sequelize(
  process.env.DATABASE_URL || `postgres://localhost:5432/${databaseName}`,
)

module.exports = db

Я импортирую его в файл blog.js и сделаю примерно так:

const Sequelize = require('sequelize')
const db = require('../db')

const blog = db.define('blog', {
  your_field_name_here: {
    type: your_sequelize_type_here
  },
  ... and so on
})

module.exports = blog

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

Другие вопросы по теме