我如何在SailsJs中使用PostgreSQL事务?

我的问题是,我有一个复杂的查询链,如果这个交易的人失败,它会回滚。 我已经阅读了Sails中的事务,并且默认情况下,Sails不支持事务,因为每个事务与Postgresbuild立新的连接,所以一个查询有一个新的连接。 那么,我如何使用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使用Promises(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说:

你将失去水线的灵活性,因为你的代码将不再是数据库不可知的。

另请参阅: 事务