提交的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

Egg.js中使用sequelize事务

Sequelize - findOne().success() 未定义

导入 sequelize 模型说它是未定义的

Sequelize 迁移失败,无法读取未定义的属性“toString”[关闭]

使用 Sequelize 获取“TypeError:无法读取未定义的属性‘findAll’”