2016-07-01 8 views
4

저는 C#을 사용하여 코딩하는 데 익숙하며 때로는 다른 저장소에 대한 호출이 둘 이상인 트랜잭션을 만들 때 호출이 실패하면 롤백 모든 저장소를 다룹니다.node.js : 하나 이상의 리포지토리에 대한 호출을 처리하는 트랜잭션 만들기

코드는 다음과 같다 :

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

이 오류가 bookRepository에 발생하는 경우, 삭제 된 항목은 롤백에있을 것입니다 보장합니다.

이제 node.js.를 사용하여 동일한 작업을 수행하려고합니다.

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

그래서, 같은 하나 명 이상의 저장소를 덮고있는 서비스에 대한 트랜잭션을 생성하는 몇 가지 방법이있다 : 나는 오직 저장소 내부의이 같은 트랜잭션을 생성 할 수있는 옵션이있는 mssql 패키지를 발견 설명?

+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' }); 
});