mongodb – Mongoose.js交易

我知道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);

这个插入是原子的,并且都是一次完成的。然后,您可以在“动作”集合中执行命令,并将其标记为完成,或者在完成操作时将其删除,并在完成后调用原始回调。这只有在您的动作处理循环是更新数据库的唯一方法才有用。当然,你必须停止使用猫鼬,但是越快越好。

http://stackoverflow.com/questions/17459167/mongoose-js-transactions

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:mongodb – Mongoose.js交易