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 并在方法中发送完全相同的交易
我正在为一些可能非常简单的事情而苦苦挣扎。 我正在使用带有 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 并在方法中发送完全相同的交易