Я пытаюсь создать модель с sequelize, которая демонстрирует некоторую нормализацию.Это мой первый опыт с sequelize, и я думаю Я могу заставить его делать то, что хочу, но я борюсь.
Вот мои две таблицы.
dbo.Users
| id | firstName | lastName | roleId | createdAt.. | updatedAt.. |
| 1 | john | doe | 1 |
| 2 | chris | christopherson | 1 |
| 3 | joe | montana | 2 |
dbo.Roles
| id | roleName | createdAt.. | updatedAt.. |
| 1 | admin |
| 2 | power-user |
В основном, что я ищу, так это то, что как только я правильно создал свои модели, когда я вставляю / создаю «пользователя» с Role: admin
, он (sequelize) знает, что внутри * есть запись admin
.1011 *, поэтому он берет соответствующий role.id
(1) и вставляет его в новую запись пользователя.
Теперь, если я создаю нового пользователя с Role: user
, потому что его еще нет в dbo.Roles
, онсоздам третью запись
dbo.Roles
| id | roleName | createdAt.. | updatedAt.. |
| 1 | admin |
| 2 | power-user |
| 3 | user |
внутри dbo.Roles
и добавим
dbo.Users
| id | firstName | lastName | roleId | createdAt.. | updatedAt.. |
| 1 | john | doe | 1 |
| 2 | chris | christopherson | 1 |
| 3 | joe | montana | 2 |
| 4 | jeff | bezos | 3 |
к моей таблице dbo.Users
.
Это то, что я пробовалпока, но я продолжаю получать SequelizeEagerLoadingError
с, или я получаю дубликаты admin
записей в моей таблице dbo.Roles
.
const Role = sequelize.define('Role', {
RoleName: Sequelize.STRING,
CreatedBy: Sequelize.STRING
});
const User = sequelize.define('User', {
FirstName: Sequelize.STRING,
LastName: Sequelize.STRING,
UserPrincipalName: Sequelize.STRING,
Department: Sequelize.STRING,
CreatedBy: Sequelize.STRING,
UpdatedBy: Sequelize.STRING,
RoleId: {
type: Sequelize.INTEGER,
references: {
model: Role,
key: 'id'
}
}
});
Role.hasMany(User, { foreignKey: 'RoleId' });
Вызов User.create
:
await User.create({
FirstName: 'Jeff',
LastName: 'Bezos'
Role: {
RoleName: 'admin',
CreatedBy: 'jimjones@gmail.com'
}
}, {
include: [{
model: Role
}]
});