Typescript Sequelize 使用链接到事务中数据的键创建数据

Typescript Sequelize create data with keys linked to data in a transaction

我正在为一些可能非常简单的事情而苦苦挣扎。 我正在使用带有 sequelize 和 typescript 的 postgrès SQL。

我想做的是创建两个东西,一个作为另一个的参考,但如果创建一个失败,那么我不想提交任何东西。

这是我的代码,我正在尝试创建一个人并给他分配一些鞋子。

CREATE TABLE User
(
  id BIGSERIAL PRIMARY KEY,
  firstname TEXT,
  lastName TEXT
);

CREATE TABLE Shoes
(
  id BIGSERIAL PRIMARY KEY,
  size INTEGER NOT NULL,
  idUser BIGINT REFERENCES User(id) NOT NULL
);
async function operations() {
  const t = await sequelize.transaction();
  try {
    await User.create({
      firstName: 'Bart',
      lastName: 'Simpson'
    }, { transaction: t });

    await Shoes.create({
      idUser: // here I want the id of my futur new creation (bart simpson)
      size: 43
    }, { transaction: t });
    await t.commit();

  } catch (error) {
    await t.rollback();
  }
}

operations.then(() => {/*do something*/})

问题是,我不知道如何获取我的新用户的未来 ID,如果我在数据库为空的情况下输入像 1 这样的硬数据,或者如果我获得最新的用户 ID 并且我' m 加 1 然后我得到一个错误 violates foreign key constraint。 我认为这是因为用户不存在于数据库中但存在于事务中。

如果有人能帮助我:)

事实上,我在 get 中发送交易也可以 return 将在交易中创建的值,因此只需要使用 get 并在方法中发送完全相同的交易