2017-10-03 12 views
0

における取引の確認、次のことができます。各クエリ SequelizeでSequelize

  • 、または自動的に2番目の引数はCLSを使用して、すべてのクエリにトランザクションを渡すよう

    • を手動でトランザクションを渡します。

    私は手動オプションを使用したいと思いますが、トランザクションが提供されていないとクエリがエラーをスローするようにデフォルトモデルの動作を変更したいと思います。オプションのnoTransaction引数を使用すると、トランザクションチェックをバイパスできます。

    すなわち

    myModel.update({newValue: true}); // throws Error "No transaction specified" 
    myModel.update({newValue: true}, {transaction}); // OK 
    myModel.update({newValue: true}, {noTransaction: true); // OK 
    

    Sequelizeでモデルのメソッドのデフォルトの動作を更新して行くための最善の方法は何ですか?

  • 答えて

    0

    Sequelizeは、すべてのモデルにフックを追加サポートとして、これは簡単ですが判明:

    sequelize.addHook('beforeCreate', checkForTransaction); 
    sequelize.addHook('beforeUpdate', checkForTransaction); 
    sequelize.addHook('beforeDestroy', checkForTransaction); 
    
    function checkForTransaction (data, options) { 
        if (!options.transaction && !options.noTransaction) { 
        throw new Error('Transaction is required'); 
        } 
    }