2016-07-01 31 views
4

我習慣於使用C#編寫代碼,有時候我創建的事務對不同的存儲庫有多個調用,如果調用失敗,則回滾涵蓋每個存儲庫。node.js:創建涵蓋對多個存儲庫的調用的事務

的代碼是這樣的:

using (var scope = new TransactionScope()) 
{ 
    itemRepository.deleteItems(items); 
    bookRepository.deleteBooks(books); 
    scope.Complete(); 
} 

這確保瞭如果上bookRepository發生錯誤,已刪除的項目將在回滾。

現在,我正在嘗試使用node.js來做同樣的事情。 我發現mssql包,有可能創造交易的選項,但只有在倉庫裏,像這樣:

var transaction = new sql.Transaction(/* [connection] */); 
transaction.begin(function(err) { 
// ... error checks 

var request = new sql.Request(transaction); 
    request.query('insert into mytable (mycolumn) values (12345)', function(err, recordset) { 
     // ... error checks 

     transaction.commit(function(err, recordset) { 
      // ... error checks 

      console.log("Transaction committed."); 
     }); 
    }); 
}); 

所以,有一些方法來創建覆蓋多個庫像我勞務交易描述?

+0

我正在爲mysql +節點尋找類似的答案 –

回答

1

您可以使用稱爲Sequelize的美麗框架創建事務範圍。 如果您查看相對於transactions的頁面,可以找到一種將事務傳遞給所有查詢的方法。

sequelize.transaction(function (t1) { 
    // With CLS enabled, the user will be created inside the transaction 
    return User.create({ name: 'Alice' }); 
}); 
相關問題