gpt4 book ai didi

javascript - 使用 sequelize 事务时如何返回新创建的对象?

转载 作者:行者123 更新时间:2023-12-03 22:25:46 26 4
gpt4 key购买 nike

我有一个以下功能,当传递一个新的用户数据时,它可以工作。它成功地将对象和子对象保存到mysql表中。但是,一旦保存到数据库中,我如何返回对象,因为我正在使用 sequelize 事务。

static async add(user) {
let transaction;
try {
// get transaction
transaction = await models.sequelize.transaction();

// *****how to return the newly created user *****************************************

models.User.create(user).then(newUser => {
const id = newUser.id;

//save address
if(user.address){

address.userId = id;
models.Address.create(address);

}
}).catch(error => {
throw error;
});

await transaction.commit();

} catch (error) {
console.log(error);
// Rollback transaction
if (transaction) await transaction.rollback();
throw error;
}
}

最佳答案

尝试创建一个自动事务,使用 await 并在模型的 transaction 函数中指明 create:

static async add(user) {
try {
const createdUser = await models.sequelize.transaction(transaction => {
const newUser = await models.User.create(user, { transaction })
//save address
if(user.address){
address.userId = newUser.id;
await models.Address.create(address, { transaction });
}
return newUser;
});
// if you are here it means transaction already commited
return createdUser;
} catch (error) {
// if you are here it means transaction already rolled back
console.log(error);
throw error;
}
}

关于javascript - 使用 sequelize 事务时如何返回新创建的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62053123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com