У меня есть две таблицы A - Таблица заказов и B - Таблицы деталей заказа. Заказ имеет одно-много взаимосвязей с деталями заказа.
Создать запись с помощью секвелирования очень просто. Но обновление записи кажется невозможным за один вызов.
Модели:
Orders.hasMany(models.OrderDetails);
OrderDetails.belongsTo(models.Orders, {
foreignKey: 'specialOrderId',
targetKey: 'id',
as: 'specialOrder'
});
Для создания:
return models.sequelize.transaction(tx =>
models.Orders.create(OrderDetailsParams, {
include: [models.OrderDetails],
transaction: tx
}));
Для обновления мне нужно сделать:
return models.Orders.update(OrdersParams, {
where: {
id: id
},
required: true,
}).then((Orders) => {
if(Orders[0] !== 0) {
sequelize.Promise.each(OrderDetails, (items) => {
return models.OrderDetails.findOne({
where: {
OrderId: id,
itemId: items.itemId
}
});
Как я могу обновить его за один вызов?
Диалект: MS SQL - который не поддерживает массовое обновление / upsert или updateOnDuplicate в массовом создании.
Я попытался куча подходов, таких как флаг onUpdate и установка его в true или использование экземпляров build и save.
Что будет лучшим решением для обновления записей с ассоциацией hasMany?