Для создания отношения "один к одному" с использованием Sequelize, необходимо определить две модели и установить связь между ними.
Рассмотрим пример создания отношения "один к одному" между моделями User и Profile.
1. Определение моделей:
// Модель User const User = sequelize.define('User', { // поля модели User }); // Модель Profile const Profile = sequelize.define('Profile', { // поля модели Profile });
2. Установка связи:
Для установки связи "один к одному" в Sequelize используется метод hasOne
для одной модели и метод belongsTo
для другой модели.
User.hasOne(Profile); // Устанавливаем связь: User имеет один Profile Profile.belongsTo(User); // Устанавливаем связь: Profile принадлежит к User
3. Настройка дополнительных параметров связи:
При необходимости можно настроить дополнительные параметры для связи, такие как название поля внешнего ключа и ограничение на удаление записей.
User.hasOne(Profile, { foreignKey: 'user_id', // название поля внешнего ключа onDelete: 'CASCADE' // ограничение на удаление записей }); Profile.belongsTo(User, { foreignKey: 'user_id' // название поля внешнего ключа });
4. Применение изменений в базе данных:
После определения моделей и установки связей, необходимо выполнить синхронизацию с базой данных для создания таблиц.
sequelize.sync() .then(() => { console.log('Таблицы созданы'); }) .catch((error) => { console.error('Ошибка при создании таблиц:', error); });
В результате выполнения этих шагов, будет создано две таблицы в базе данных - Users и Profiles. В таблице Profiles будет создано поле user_id, которое будет использоваться для связи с таблицей Users.
Теперь вы можете работать с моделями, создавать, обновлять и удалять записи, и использовать связанные данные.
Пример создания связанных записей:
User.create({ // данные пользователя }).then((user) => { Profile.create({ // данные профиля user_id: user.id // связываем созданный профиль с пользователем }).then((profile) => { console.log('Создан пользователь и профиль:', user, profile); }); });
Это основы работы с отношением "один к одному" в Sequelize. Вы можете настроить дополнительные параметры связи, добавить валидации и использовать другие возможности ORM Sequelize. Все это документировано на официальном сайте Sequelize.