【问题标题】:Meteor transactional operationsMeteor 事务操作
【发布时间】:2013-02-12 21:12:19
【问题描述】:

我想在一个函数中更新 3 个流星集合,但前提是所有三个更新都成功。否则我想回滚。是否有这样做的好模式?

谢谢

【问题讨论】:

  • 查看collection.update。它有一个可选的回调。如果没有错误,您可以继续进行后续更新。
  • @Prashant 我不建议这样做,因为在随后的第二步中,如果节点突然崩溃或无法访问 mongodb 服务器,则不会放置第三个条目。
  • 崩溃时可以处理吗?所以基本上使用状态值的任何一种方式都是强制性的,是吗?

标签: meteor


【解决方案1】:

meteor 使用 mongodb 作为其不明确支持事务的数据库后端。但是您仍然可以使用一种模式:http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/

基本上,您只需在每笔交易中添加一个状态值,并仅在一切完成后将其标记为已完成

【讨论】:

  • 而且由于Collection.insert有回调参数,所以可以使用回调完成交易
  • 使用回调是客户端继续下一步所必需的,纤程在服务器上负责。如果不使用事务状态属性模式,回调不会使其成为事务性的。如果在任何阶段出现中断(例如错误),则一个条目将进入,而不是另一个条目。如果在回调中使用错误检查,它仍然容易受到服务器崩溃/电源故障事件的影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多