Итак, читая документацию Sequelize по Экземпляр , а также документы о транзакциях , sequelize.transaction()
принимает в качестве параметра функцию autoCallback
.Документы говорят:
Обратный вызов вызывается с объектом транзакции и должен возвращать обещание.Если обещание выполнено, транзакция совершается;если обещание отклоняется, транзакция откатывается
Однако я планирую многое сделать внутри транзакции и хочу избежать ада обратного вызова.Поэтому я попытался сделать
try {
let result = sequelize.transaction({
isolationLevel: 'SERIALIZABLE'
}, async t => {
// code to run here with await
let var1 = await Model.find({ transaction: t });
let var2 = await Model.find({ transaction: t });
if (var1.id === 1)
return "Whatever result";
else
throw new Error("Something wicked");
}
)});
// Whatever result
console.log(result);
}catch(e){
// Something wicked
}
Кажется, это работает отлично.Но это абсолютно недокументировано, и я не видел, чтобы кто-нибудь использовал это.Это нормально, или я столкнусь со случайными проблемами?