const { Sequelize, DataTypes } = require('sequelize');
// Подключение к базе данных
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql',
});
// Определение модели UsersModel
const UsersModel = sequelize.define('User', {
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
},
// Другие поля пользователя
});
// Определение модели RolesModel
const RolesModel = sequelize.define('Role', {
title_role: {
type: DataTypes.STRING,
allowNull: false,
},
// Другие поля роли
});
// Определение отношения "один к одному"
UsersModel.hasOne(RolesModel);
RolesModel.belongsTo(UsersModel);
// Пример создания записи пользователя с ролью
sequelize.sync()
.then(async () => {
const user = await UsersModel.create({
email: 'example@example.com',
// Другие поля пользователя
});
const role = await RolesModel.create({
title_role: 'Admin',
// Другие поля роли
});
// Связываем пользователя с ролью
await user.setRole(role);
// Запрос на получение пользователя с ролью
const foundUser = await UsersModel.findOne({
where: { email: 'example@example.com' },
include: RolesModel, // указываем, что хотим включить связанную модель
});
if (!foundUser) {
console.error('Пользователь не найден');
} else {
console.log(foundUser.email + ' - ' + foundUser.Role.title_role);
}
})
.catch((error) => {
console.error('Ошибка при синхронизации с базой данных:', error);
});