我似乎在如何将事务插件(与postgresql)与node 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");
});
});当我运行这段代码时,偶尔会看到console.log输出以下内容:
"committed"
"saved"这和我预期的顺序相反。并且我对row所做的更改不会保存到数据库中。看起来这里的异步函数调用有一些问题,但我只是按照node orm2 transaction插件中的文档操作。
有人知道我做错了什么吗?谢谢!
发布于 2014-01-13 16:49:25
这应该是可行的。
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");
});
});
});https://stackoverflow.com/questions/20866789
复制相似问题