2016-04-07 30 views
3

私はNodejsにsequalizeトランザクションを使用していますが、私の問題は、それが私のテーブルsequelize更新トランザクション

return sequelize.transaction(function (t) { 
    var Users = objAllTables.users.users(); 
    return Users.update(updateUser, { 
     where: { 
      uid: sessionUser.uid, 
      status: 'ACTIVE' 
     } 
    },{ transaction: t }).then(function (result) { 

     return Utils.sendVerificationEmail(sessionUser.uid, sessionUser.user_email) 
      .then(function(data){ 
       data = false; 
       if(data == false){ 
         throw new Error('Failed Email'); 
       } 

      }); 


    }).then(function (result) { 
     console.log(result); 
     // Transaction has been committed 
     // result is whatever the result of the promise chain returned to the transaction callback 
    }) 

}).catch(function(err){ 
    res.send({message:err.message}) 
}) 

CONSOLEの取引で私usersテーブルを取得し、更新しないことです:

Executing (ad5247bd-18b8-4c6f-bb30-92744c7a5ac8): START TRANSACTION; 
Executing (ad5247bd-18b8-4c6f-bb30-92744c7a5ac8): SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; 
Executing (ad5247bd-18b8-4c6f-bb30-92744c7a5ac8): SET autocommit = 1; 
Executing (default): UPDATE `users` SET `username`='edited' WHERE `uid` = 20 AND `status` = 'ACTIVE' 
Executing (ad5247bd-18b8-4c6f-bb30-92744c7a5ac8): ROLLBACK; 

コンソール更新クエリに表示されるように、トランザクションがなくなった場合

+0

私は自分のコンソールで同じ書き出しを印刷したいと思います。それをする鍬? –

+0

@ shumanachowdhuryデータベースに接続中にsequelizeオプションでロギングを有効にする必要があります。 [this](https://stackoverflow.com/questions/21427501/how-can-i-see-the-sql-generated-by-sequelize-js) – Shaharyar

答えて

12

transactionキーはにする必要があります:

return Users.update(updateUser, { 
     where: { 
      uid: sessionUser.uid, 
      status: 'ACTIVE' 
     }, 
     transaction: t  //second parameter is "options", so transaction must be in it 
    }) 
+0

を参照してください。sequelizeのdestroyメソッドを使用するとどうなりますか? i-e users.destroy() –

+1

@AhmerSaeed 'destroy'は1つのパラメータしか取らず、すべてのオプションを渡す必要があります。 * ie * 'users.destroy({{id:57}、{{トランザクション:}})' – Shaharyar

関連する問題