2017-08-08 10 views
0

massive.jsとの取引を実行する方法:postgresデータベース上でこれを実行するは、私は非常に単純なことを達成しようとしている

START TRANSACTION; 
DELETE FROM table WHERE id = 1; 
ROLLBACK; 

は完璧に動作します。 massive.jsで、それはしません:それは変更をロールバックしません

this.db.run(
    "START TRANSACTION", 
    [] 
); 
setTimeout(() => { 
    this.db.run(
     "DELETE FROM table WHERE id = $1" 
     [1] 
    ); 
}, 2000); 
setTimeout(() => { 
    this.db.run(
     "ROLLBACK;" 
     [] 
    ); 
}, 4000); 

は、単にデータベースから削除されます。 COMMITも機能しません。どうしましたか?

クエリをダンプする方法はありますか?今度はトランザクションをサポート

+0

このようなトランザクションのポイントは何ですか? –

答えて

0

大規模な用途の下pg-promise、:

db.instance.tx(t => { 
    // BEGIN has been executed 
    return t.none('DELETE FROM table WHERE id = $1', [123]) 
     .then(() => { 
      // Records have been deleted within the transaction 

      throw new Error('Random error to fail the transaction'); 
      // = the same as returning Promise.reject(new Error('Random...')) 
     }); 
}) 
    .catch(error => { 
     // ROLLBACK has been executed, no records end up deleted. 
     console.log(error); 
    }); 

も参照してください:

クエリをダンプする方法はありますか?

Monitoring Queries

は、あなたがそれを行う方法を示し、または massiveを初期化するとき、あなたは db.driverConfigオブジェクト内のイベント queryハンドラを追加することができます。

関連する問題