gpt4 book ai didi

mongodb - Mongoose.js 事务

转载 作者:IT老高 更新时间:2023-10-28 13:04:06 24 4
gpt4 key购买 nike

我知道 MongoDB 不像关系数据库那样支持事务,但我仍然想知道如何实现多个操作的原子性。在网上打猎,我看到有人提到Transactions without Transactions .通读幻灯片,我仍然不清楚如何使用 Mongoose.js 实现它。

以这段代码为例:

player.save(callback1);
story.save(callback2);

如何实现 callback1 和 callback2 以便它们一起成功或一起失败?

最佳答案

如果您确实必须跨多种文档类型(在单独的集合中)进行事务处理,则实现此目的的方法是使用一个存储要执行的操作的表。

db.actions.insert(
{ actions: [{collection: 'players', _id: 'p1', update: {$set : {name : 'bob'} } },
{collection: 'stories', _id: 's1', update: {$set : {location: 'library'} } }], completed: false }, callback);

这个插入是原子的,并且一次完成。然后,您可以执行“操作”集合中的命令并将它们标记为完成或在完成它们时将其删除,并在它们全部完成时调用您的原始回调。这仅在您的操作处理循环是唯一更新数据库的情况下才有效。当然,你必须停止使用 mongoose,但越早越好。

关于mongodb - Mongoose.js 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17459167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com