2013-02-27 84 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