Для создания ассоциации "один к одному" в Sequelize, необходимо использовать методы hasOne
и belongsTo
.
Допустим, у нас есть две таблицы в базе данных MySQL: Users
и Profiles
, и мы хотим установить ассоциацию "один пользователь имеет один профиль".
Сначала, мы должны определить модели для этих таблиц с помощью Sequelize. Для таблицы Users
это может выглядеть следующим образом:
const User = sequelize.define('User', { username: DataTypes.STRING, email: DataTypes.STRING });
Для таблицы Profiles
:
const Profile = sequelize.define('Profile', { firstName: DataTypes.STRING, lastName: DataTypes.STRING, age: DataTypes.INTEGER });
Затем, мы можем определить ассоциацию между этими таблицами с помощью методов hasOne
и belongsTo
:
User.hasOne(Profile, { foreignKey: 'userId' }); Profile.belongsTo(User, { foreignKey: 'userId' });
В приведенном выше коде, мы указываем, что модель User
имеет одну запись в модели Profile
, и что модель Profile
принадлежит модели User
. Мы также указываем поле userId
в качестве внешнего ключа, которое используется для связи между этими таблицами.
После определения ассоциации, Sequelize автоматически создаст методы для доступа к связанным данным. Например, у модели User
будет метод getProfile
, который возвращает связанный профиль пользователя, и метод setProfile
, который устанавливает связанный профиль пользователя.
const user = await User.findOne(); const profile = await user.getProfile(); console.log(profile); const newProfile = await Profile.create({ firstName: 'John', lastName: 'Doe', age: 30 }); await user.setProfile(newProfile);
В приведенном выше примере, мы получаем профиль пользователя с помощью метода getProfile
, а затем устанавливаем новый профиль с помощью метода setProfile
.
Таким образом, мы создали ассоциацию "один пользователь имеет один профиль" с помощью методов hasOne
и belongsTo
в Sequelize. Это позволяет связывать данные между таблицами и работать с ними с помощью удобных методов.