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