首页 > 解决方案 > 如何在MongoDB数据库中回滚?

问题描述

我在 Mongodb 中有 2 个连续查询。例如,我的第一个查询是创建一个Device,我的第二个查询是在创建 Device 后创建一个Slave。有时Device可能会出现而Slave可能不会出现。如果 Slave 没有发生,我想撤消 Device 操作。如何在Mongodb数据库中进行回滚事件?

const Device = require("../../models/device");
const Slave = require("../../models/slave");

module.exports = (req, res, next) => {
  const optionDevice = {
    project_id: req.params.project_id.trim(),
    title: req.body.title.trim(),
    label: req.body.label.trim(),
    communication: req.body.communication
  };

  const newDevice = new Device(optionDevice);

  newDevice
    .save()
    .then(device => {
      const newSlave = new Slave({
        device_id: device._id,
        project_id: device.project_id,
        title: "Slave 1",
        slave_id: 1
      });

      newSlave
        .save()
        .then(slave => {
          return res.status(201).json({
            message: i18n.__("general")._201,
            data: device
          });
        })
        .catch(err => {
          return res.status(400).json({
            message: i18n.__("general")._400.transaction,
            error: err
          });
        });
    })
    .catch(err => {
      res.status(500).json({
        message: i18n.__("general")._500,
        error: err
      });
    });
};

标签: node.jsmongodbexpressmongoose

解决方案


推荐阅读