Включить данные таблицы соединений после создания новой записи с помощью sequelize - PullRequest
0 голосов
/ 18 июня 2020

У меня есть 3 таблицы Inventories, Items и InventoryItems (соединительная таблица с атрибутом qty). Я хочу иметь возможность добавить новую запись в InventoryItems и включить связанную с ней информацию об элементе из таблицы элементов в один запрос, это возможно? Мое текущее решение - создать элемент, а затем запросить второй раз элемент с включенной информацией -

  const itemToCreate = {
        inventoryId,
        itemId,
        qty,
  }

  const addedInventoryItem = await InventoryItem.create(itemToCreate);

  const query = {
    where : {
      inventoryId,
      itemId
    },
    attributes: ['qty'],
    include : {
      association : 'itemInfo', //alias for Item Model
      attributes : ['name', 'description']
    }
  }

  const fullItemInfo = await InventoryItem.findOne(query);

1 Ответ

0 голосов
/ 19 июня 2020

вы можете использовать цепочку обещаний следующим образом.

const itemToCreate = {
    inventoryId,
    itemId,
    qty,
}

const query = {
    where: {
        inventoryId,
        itemId
    },
    attributes: ['qty'],
    include: {
        association: 'itemInfo', //alias for Item Model
        attributes: ['name', 'description']
    }
}

InventoryItem
    .create(itemToCreate)
    .then(function () {
        InventoryItem
            .findOne(query)
            .spread(function (InventoryItem, created) {
                console.log(InventoryItem.get({
                    plain: true
                }))
                console.log(created);
            })
    })
...