繁体   English   中英

如何在 SailsJs 中使用 PostgreSQL 事务?

[英]How can I use PostgreSQL transactions in SailsJs?

我的问题是我有一个复杂的查询链,如果此事务中的某个人失败,它会回滚。 我已经阅读了 Sails 中的事务,默认情况下,Sails 不支持事务,因为每个事务都与 Postgres 建立一个新连接,因此,一个查询有一个新连接。 那么,我如何使用 Sails 的交易?

目前,水线不支持交易。 你可以在这里加入讨论https://github.com/balderdashy/waterline/issues/755

交易在路线图上,但预计不会在不久的将来: https : //github.com/balderdashy/waterline/blob/master/ROADMAP.md#pending-proposals

作为一种解决方法,您可以尝试https://github.com/Shyp/pg-transactions但是您将失去水线的灵活性,因为您的代码将不再与数据库无关。

还要检查Sails.js 使用带有承诺的事务(Postgres)Sails.js + Postgres 的最佳实践:事务问题

最简单的方法是通过pg-promise支持的自动事务:

db.tx(t=> {
    // - returning a value or a resolved promise will result in COMMIT
    // - returning a resolved promise or throwing an error will result in ROLLBACK
})
    .then(data=> {
        // COMMIT has been executed
        // data  = data returned from the callback
    })
    .catch(error=> {
        // ROLLBACK has been executed
        // error = rejection reason or error thrown
    });

但是您需要直接执行查询,而不是通过 Waterline,正如@zabware 所说:

您将失去水线的灵活性,因为您的代码将不再与数据库无关。

另见: 交易

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM