gpt4 book ai didi

javascript - 第二次查询执行出错如何回滚| Node JS

转载 作者:行者123 更新时间:2023-12-02 00:07:09 24 4
gpt4 key购买 nike

我以前在 PHP 中使用回滚,我想在 NodeJS 中实现相同的概念。我正在调用一个将数据插入到 database 的函数,成功后我从另一个 Model 调用另一个函数将数据插入到另一个 table.

我的代码

StoreReport

'use strict';

var sql = require('./db.js');

// IMPORT ANOTHER MODEL
var CashDetailModel = require('./cashDetailModel.js');

var StoreReport =function(storeReport){
this.store_id=storeReport.store_id;
this.cash_expense=storeReport.cash_expense_amount;

}

StoreReport.addNewStoreReport = function (report_details,request,result){

sql.query('INSERT INTO store_report SET ?',report_details, function(err,res){
if(err){
result(err,null);
}else{
var new_cash_detail = new CashDetailModel(report_details);
new_cash_detail.store_report_id=res.insertId;
CashDetailModel.addCashDetail(new_cash_detail,function(err,CashDetailModel){
if(err){

// I NEED TO ROLLBACK IF ERROR OCCURED IN THIS PHASE
res.send(err);
}else{
result(null,res.inserted);
}
})
}
})
}

module.exports = StoreReport;

最佳答案

这里解释得很好:https://know-thy-code.com/transactions-with-multiple-queries-nodejs-mysql/ .

您在第一个查询之前调用 sql.beginTransaction() 并将您的查询写入回调中。然后您可以使用 sql.rollback() 回滚您的事务或使用 sql.commit() 提交更改。

关于javascript - 第二次查询执行出错如何回滚| Node JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60217859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com