0

コーディングに間違った部分があるかどうか疑問に思っています。一連の関数とチェックを実行しようとしていますが、満たされていない条件があれば、トランザクションをロールバックしたいと考えています。

私はstackoverflowのリファレンスを参照しています

新しいエラーをスローした後もトランザクションがコミットされます。

これが私のサンプルコーディングです。

//db.js
import Sequelize from 'sequelize';
import Cls from 'continuation-local-storage';
Sequelize.cls = Cls.createNamespace('db');
const Conn = new Sequelize(
    'relay',
    'postgres',
    'tec832',
    {
    dialect: 'postgres',
        host: 'localhost'
    }
);
module.exports.Db = Conn;

私が持っているschema.jsで

Db.transaction({autocommit: false}).then(()=>{
    args = {vcTitle: {$ilike: `Sample title by Nick`}};
    return testDelPostPromiseNoTran(args).then(obResult => {
        throw new Error("Wrong account type");
    })
});

function testDelPostPromiseNoTran(args){
    return new Promise((resolve, reject) => {
        resolve(delDataNoTran('Post', args));
    });
}

//I am trying to do a standard delete
function delDataNoTran(vcTbName, args){
    return Db.models[vcTbName].destroy({where: args})
    .then(result =>{
        if(result > 0){
            return true;
        }else{
            return false;
        }
    })
    .error(obStatus =>{
        return false;
    });
}
4

1 に答える 1