提交的Sequelize事务的结果为“未定义”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提交的Sequelize事务的结果为“未定义”相关的知识,希望对你有一定的参考价值。
我正在使用成功返回的Sequelize事务,但是结果不确定。如文档中所述:
.then(function (result)
// Transaction has been committed
// result is whatever the result of the promise chain returned to the transaction callback
结果应包含东西!
我的代码成功运行并更新了数据库,并输入了.then
块,但结果日志为“未定义”。
return sequelize.transaction(t =>
return createUser(body, transaction: t)
.then(user =>
if (user != null)
return createSetup("user_id" : user.dataValues.id, transaction: t)
.then(setup =>
console.log("setup was created")
)
.catch(err =>
throw new Error("the setup key was not created successfully... reverting transaction 2")
)
else
throw new Error("no return value from creating user");
)
.catch(err =>
throw new Error("Failed to create user")
)
)
.then(result =>
console.log(result) //this returns undefined
res.status(200).send(
success: true,
message: "The user was successfully created.",
)
)
.catch(error =>
console.log("error")
res.status(400).send(
success: false,
message: error
)
)
)
我真的想要user
对象的结果,但是无论我做什么,它都仍然是未定义的。我已尝试在事务中的后续功能上有无回报。
答案
我当时的假设是
return createUser(body, transaction: t)
将是“承诺链的结果返回到事务回调中的结果
但是,我还需要返回用户对象才能在result
中获得它>
return sequelize.transaction(t =>
return createUser(body, transaction: t)
.then(user =>
if (user != null)
return createSetup("user_id" : user.dataValues.id, transaction: t)
.then(setup =>
//this line is necessary to get the value in the result of the transaction
return user, setup
)
另一答案
尝试一下
以上是关于提交的Sequelize事务的结果为“未定义”的主要内容,如果未能解决你的问题,请参考以下文章
sequelize(和 sequelize-cli)queryInterface.createTable 在 PostgreSQL 上,PK id 类型为 UUID 和 defaultValue:Se
Sequelize - findOne().success() 未定义