node.js - 如何在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
});
});
};
解决方案
推荐阅读
- php - laravel,如何重定向到最佳 URL
- rest - 在 WEB API 请求中提供对嵌套资源的直接访问而不指定父级?
- node.js - 将文件共享复制到另一个文件共享 Node.js
- php - 无法将图书分配给用户
- ruby-on-rails - RubyZip 设置文件时间戳
- python-3.x - 在python中创建子图
- adobe-analytics - 为什么即使 DTM Switch 显示卫星呼叫,Adobe Analytics 呼叫也无法触发?
- azure - 向 Cosmos DB 添加新属性
- arduino-esp8266 - 如何从我的 arduino IDE 上的串行监视器查看 IP 地址?
- android - 如何从 RxAndroidBle 获取 BluetoothGatt 对象