Как обновить таблицу ассоциации hasMany в sequelize - PullRequest
0 голосов
/ 04 мая 2020

У меня есть две таблицы 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?

...