节点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"); }); }); });