2013-02-27 65 views
8

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

感谢

+0

退房['collection.update'](他们所做的HTTP ://docs.meteor.com/#update)。它有一个可选的回调。如果没有错误,您可以继续进行后续更新。 – Prashant 2013-02-27 09:40:30

+2

@Prashant我不会推荐这样做,因为在第二个后续步骤中,如果节点突然崩溃或失去对mongodb服务器的访问,第三项不会被放入。 – Akshat 2013-02-27 13:33:11

+0

这可以在崩溃时处理吗?所以基本上任何使用状态值的方法都是强制的,你呢? – Prashant 2013-02-27 20:09:38

回答

2

流星使用的MongoDB其数据库后端不明确支持交易。但还是有规律可循的,你可以使用:http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/

基本上你只要把状态值在每个交易,并仅标记时样样齐全

+0

由于'Collection.insert'具有回调参数,因此您可以使用回调来完成事务 – Swadq 2013-02-27 11:54:19

+0

使用回调对于继续客户端的下一步操作是必要的,光纤在服务器上负责。如果事务状态属性模式未被使用,回调将不会使其成为事务性的。如果在任何阶段出现中断,例如错误,则一个入口将在另一个入口而不是另一个入口。如果使用回调中的错误检查,它仍然容易受到服务器崩溃/电源故障事件的影响。 – Akshat 2013-02-27 13:24:40