第二次查询执行中发生错误时如何回滚| NodeJS

问题描述 投票:0回答:1

我以前在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;
javascript node.js model-view-controller node-modules rollback
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.