2016-07-01 3 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 + node –

答えて

1

Sequelizeと呼ばれる美しいフレームワークを使用してトランザクションスコープを作成できます。 transactionsを基準にしてページを見ると、すべてのクエリにトランザクションを渡す方法を見つけることができます。

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