节点Orm2交易插件

我似乎有问题如何使用交易插件(与Postgresql)与节点orm2。 我想我误解了事务如何与asynchronous函数调用一起工作。 这是我的代码的一个例子:

function(row){ db.transaction(function(err, txn){ if(err){ return console.log(err) }; row.property = 'foo'; row.save(function(err){ if(err){ return console.log(err) }; console.log("saved"); }); txn.commit(function(err){ if(err){ return console.log(err) }; console.log("committed"); }); }); 

当我运行这段代码时,偶尔会看到console.log输出:

 "committed" "saved" 

这是我所期望的相反的顺序。 我对行进行的更改不会保存到数据库中。 看起来在这里有一些asynchronous函数调用的问题,但我只是从节点orm2事务插件的文档。

任何人有任何想法我做错了什么? 谢谢!

这应该工作。

 function(row){ db.transaction(function(err, txn){ if(err){ return console.log(err) }; row.property = 'foo'; row.save(function(err){ if(err){ return console.log(err) }; console.log("saved"); txn.commit(function(err){ if(err){ return console.log(err) }; console.log("committed"); }); }); });