В Проекте 2 наша группа решила создать контент-ориентированную платформу для самостоятельного обучения программированию. Мы назвали его DevLab. Это полнофункциональное приложение, которое следует структуре MVC. Идея состоит в том, что пользователь может просматривать различные материалы в «Полной библиотеке», а также сохранять предпочтительный контент в личной «Моей библиотеке».

При разработке базы данных мы используем Sequelize.js, ORM Node.js для MySQL на основе обещаний. Во-первых, нам нужно определить структуру данных, которая будет реализована в базе данных. Мы хотим иметь возможность создавать пользователей и содержимое. Каждый пользователь может сохранять несколько материалов, а также сортировать их по последнему добавленному или сохраненному, чтобы пользователи могли быстро находить нужные материалы. Каждый контент может быть сохранен несколькими пользователями, чтобы мы могли быстро найти самые популярные материалы или модные темы. Поэтому я хочу создать две основные модели: Пользователь и Контент. Я также хочу иметь возможность получать данные сохранения, которые должны поступать как из таблиц User, так и из таблиц Content.

В MySQL вы можете создать отдельную таблицу для «Сохранить». То, что мы хотим в таблице «Сохранить», — это просто поддерживать связи между пользователем и контентом. С Sequelize есть простой способ сделать это. Поскольку каждый пользователь может сохранять несколько материалов, а каждый контент может быть сохранен несколькими пользователями, мы можем определить их отношение как «многие ко многим». Все, что вам нужно сделать, это добавить «ассоциацию» как в модели пользователя, так и в модели контента. Таким образом, он создаст соединительную таблицу, которая сопоставляет таблицы User и Content вместе, ссылаясь на первичные ключи каждой таблицы. Теперь мы можем получить «userId» и «contentId» из этой ассоциативной таблицы с именем «User_Content». Вы можете определить имя, используя свойство through при настройке в моделях ownToMany.

Кроме того, нам нужны метки времени, чтобы мы могли сортировать последнее добавленное или сохраненное содержимое. Очень удобно получать временные метки с помощью Sequelize, потому что Sequelize по умолчанию добавляет к моделям атрибуты createdAt и updatedAt, поэтому мы сможем узнать, когда запись из базы данных попала в базу данных и когда она была обновлена ​​в последний раз.

Теперь я могу нарисовать диаграмму взаимосвязей сущностей (ERD), которая помогает визуализировать всю структуру данных. Вы хотели бы использовать ERD в совместном проекте, чтобы четко видеть на диаграмме, как поля и типы определяются в каждой модели, а также соответствующие связи между таблицами.

Вот как выглядят данные JSON. Обратите внимание, как мы можем запросить связанную модель контента в модели пользователя. Временные метки для создания и обновления также записываются.

В целом, Sequelize.js — отличная ORM при использовании Node.js для разработки серверных приложений. Sequelize обеспечивает хорошую поддержку синхронизации и ассоциаций базы данных, что позволяет отображать реляционную базу данных без написания большого количества операторов SQL. Попробовать Sequelize.js в качестве альтернативы MySQL для получения удовольствия от работы с базами данных — отличный опыт.