В этой функции я хочу применить транзакцию с помощью async / await, я использовал два запроса на обновление для двух разных таблиц, если произошла какая-либо ошибка проверки, хочу откатить транзакцию, я следовал инструкции manual но не может применяться в моем коде. Так как я могу применить транзакцию в функции .then.
В маршрутах -> Пользователь. js
router.post('/update_personal_data', normalUser.updatePersonalData);
В NormalUser. js
const models = require('../../../app/models');
const Sequelize = require('sequelize');
const sequelize = models.sequelize;
const config = require('../../../config/config.json');
const _sendResponse = require('../../../app/helper/global').sendResponse;
const _responseData = require('../../../app/helper/global').responseData;
async updatePersonalData(req, res) {
let userData = await getUserId(req.headers['access_token']);
let user_id = userData.mi_user_id;
var user_address = req.body.useraddress;
var Pincode = req.body.pincode;
var Age = req.body.age;
var Gender = req.body.gender;
var Marital_status = req.body.marital_status;
var Father_name = req.body.father_name;
var Husband_name = req.body.husband_name;
var First_name = req.body.first_name;
var Last_name = req.body.last_name;
var Landline_no = req.body.landline_no;
var Email = req.body.email;
var Location = req.body.location;
const t = await sequelize.transaction();
await models.mi_user_details.update({
mi_user_address: user_address,
mi_pincode: Pincode,
mi_gender: Gender,
mi_age: Age,
mi_marital_status: Marital_status,
mi_father_name: Father_name,
mi_husband_name: Husband_name
}, {
where: {
mi_user_id: user_id
}
},{ t }).then(async function(userdetails) {
await models.User.update({
mi_first_name: First_name,
mi_last_name: Last_name,
mi_landline_no: Landline_no,
mi_catlocyadi_id: Location,
mi_email: Email
}, {
where: {
mi_user_id: user_id
}
},{ t }).then(async function(userdetails) {
_sendResponse(res, 200, "UserDetails Updated Successfully");
await t.commit();
}).catch(async function(err) {
await t.rollback();
var key_arr = {
'validation_error': null
}
key_arr['validation_error'] = err.errors.map(function(item) {
return item["message"];
});
var data_err = []
data_err.push(key_arr)
_sendResponse(res, 401, "Something Went Wrong", data_err);
});
}).catch(async function(err2) {
await t.rollback();
var key_arr = {
'validation_error': null
}
key_arr['validation_error'] = err2.errors.map(function(item) {
return item["message"];
});
var data_err = []
data_err.push(key_arr)
_sendResponse(res, 401, "Something Went Wrong", data_err);
});
}
версии:
продолжение: ^ 5.21.3
узел: v12 .14.0