将插入到多个表中

时间:2018-07-25 18:34:46

标签: express sequelize.js

我正在将express js用作Web应用程序的后端,并且有一个要求:“在1个api调用中插入两个表中”。 每个表都有其自己的控制器,并且dml操作最好是其自己的控制器的一部分。

API调用将在threhsoldName控制器中触发createThreshold函数。在内部根据类型将其插入Threshold3PRTarget或ThresholdRangeTarget。

我正在附加2个控制器文件。这不是工作代码。但是供您了解。 让我知道是否需要更多详细信息。感谢您的帮助!

// main Controller 
'use strict';
const typeController = require('./thresholdType')
const ThreePRController = require('./threshold3PRTarget')
const rangeController = require('./thresholdRangeTarget')

const models = require('../models');
const db = require('../models/index.js');
exports.ThresholdName = {
  createThreshold:(req, res) =>{
    models.BI_DATA_TSHLD_NM.create(req.body.row)
    .then((data, err) => {
        if(data != null ) {
          // successfully inserted in first table , now insert in second
          if(req.body.row["TSHLD_TYPE_CD"] == '3PR'){
            // TODO: Make a call something like this 
            ThreePRController.Threshold3PRTarget.insertThreshold(req.body.row);
          }else if (req.body.row["TSHLD_TYPE_CD"] == 'RNG'){
            // TODO: similarly a call something like this 
            rangeController.ThresholdRangeTarget.insertThreshold(req.body.row);
          }
        } else {
          return res.status(404).json({ err: 'No data'});
        }
    }).catch(function (err) {
            return res.status(500).json({ error: 'Internal Server Error: '+ err});
        });
  }
}
// Child controllers
'use strict';

const models = require('../models');
const db = require('../models/index.js');
exports.Threshold3PRTarget = {
  insertThreshold: (row, res) => { //TODO: Not sure if passing row instead of req will work

  models.BI_DATA_TSHLD_NM.create(req.body.row)
  .then((data, err) => {
          if(data != null)
          {
              return res.status(200).json("success");
            } else {
        return res.status(404).json({ err: 'No data'});
        }
  }).catch(function (err) {
          return res.status(500).json({ error: 'Internal Server Error: '+ err});
      });
}

0 个答案:

没有答案