node.js - MongoDB,如何将事务设置为 CRUD?
问题描述
在我的项目中有一个包含findOne
and的方法。updateOne
当我的服务器出现延迟并立即处理延迟的请求时。
并在宝贵的方法运行findOne
之前带来数据。updateOne
特定列的值不应低于零,但这种现象导致(-)。
我可以在没有副本的 MongoDB 中将事务设置为 CRUD 吗?
如果我不能,我该如何处理这种情况?
这是我的代码示例。
1) 文件
{ _id: ObjectID, name: 'name', stack: 100 }
2)方法(检查和减少堆栈)
let method = async (req, res) => {
let pool = await db.connect()
let findTarget = await pool.collection('storage').findOne({ _id: req.targetID })
if((findTarget.stack - req.stackCountToReduce) > 0 ) {
let update = await pool.collection('storage').updateOne(
{ _id: req.id },
{ $set: { stack: { $inc: req.stackCountToReduce }}}
)
}
}
3)延迟后(每个请求减少30个堆栈)
{ _id: OjbectID, name: 'name', stack: -140 }
解决方案
推荐阅读
- apache-kafka - 为什么kafka不创建主题?- 不是公认的选择
- excel-formula - 更改链接中的公式
- excel - 使用 VBA 删除每个工作表中的按钮
- javascript - 从radialBar Apexcharts 中删除多余的空间
- javascript - 在像 iframe 这样的 div 中加载整个 html
- excel - 如何在 3 个条件后对列表进行排序并删除除最后一个之外的所有重复行?
- angular - 异步角度下拉性能建议
- mysql - 我如何计算特定月份按类别更改/更新的状态
- ios - 升级到 React Native 0.60.5 iOS 版本后,会出现“No bundle URL present”错误
- wordpress-gutenberg - 如何修改 Gutenberg 'core/columns' 块以更改最小和最大列数?