У меня проблема с Sequelize. Для простоты у меня есть две модели
User
и EmailAddress
Определение каждой из них:
User
sequelize.define('User', {
idUser: {
type: DataTypes.INTEGER,
field: 'IdUser',
allowNull: false,
primaryKey: true,
autoIncrement: true
},
....
const EmailAddress = model.EmailAddress;
User.hasMany(EmailAddress, {
as: 'EmailAddresses',
foreignKey: 'IdUser',
onDelete: 'NO ACTION',
onUpdate: 'NO ACTION'
});
Адрес электронной почты
sequelize.define('EmailAddress', {
idEmailAddress: {
type: DataTypes.INTEGER,
field: 'IdEmailAddress',
allowNull: false,
primaryKey: true,
autoIncrement: true
},
idUser: {
type: DataTypes.INTEGER,
field: 'IdUser',
allowNull: false,
references: {
model: 'Users',
key: 'IdUser'
},
onUpdate: 'NO ACTION',
onDelete: 'NO ACTION'
},
...
const EmailAddress = model.EmailAddress;
const User = model.User;
EmailAddress.belongsTo(User, {
as: 'User',
foreignKey: 'IdUser',
onDelete: 'NO ACTION',
onUpdate: 'NO ACTION'
});
Теперь, когда я хочу вставить регистр в обе таблицы, со следующим кодом
var oBaseIncludes = [{
model: models.EmailAddress,
as: 'EmailAddresses'
}]
var SavedUser = await models.User.create(oUser, {
include: oBaseIncludes,
transaction: t,
logging: console.log
});
Для простоты oUser это объект со всей информацией о пользователе и
user.EmailAddresses = [{
default : true,
token : user.sep6UserMemo
}];
Sequelize выдает ошибку сообщение: 'notNull Violation: EmailAddress.idUser не может быть нулевым'
Но. Если я добавлю строку (перед сохранением пользователя)
oUser.EmailAddresses[0].idUser = -1;
Это работает! (вставьте в обе таблицы правильно, а не с idUser = -1)
Похоже, что Sequelize не может установить idUser в EmailAddresses. Похоже, что Sequelize не может соединить обе модели.
Надеюсь, кто-нибудь мне поможет!
Заранее спасибо!