我正在開發一個Rails應用程序,該應用程序實現了一些社交網絡功能作爲關係,跟隨等。到目前爲止,一切都很好,直到我遇到了許多關係中的問題。正如你所知道的,mongo缺少連接,所以推薦的解決方法是將關係作爲兩個相關文檔上的id數組存儲。 OK,這是一個有點多餘,但它應該工作,讓我們說:確保MongoDB中所有文檔之間的數據一致性
field :followers, type: Array, default: []
field :following, type: Array, default: []
def follow!(who)
self.followers << who.id
who.following << self.id
self.save
who.save
end
這工作得很好,但是這是我們需要一個事務,呃這些情形之一的,但蒙戈不支持事務。如果將id添加到「follow」追隨者列表中,但不添加到「follower」追隨者列表中,該怎麼辦?我的意思是,如果第一個文件被正確修改,但第二個文件由於某種原因不能更新。
也許我太悲觀了,但沒有更好的解決方案?
爲什麼要將它存儲在兩個地方?您可以將其存儲在一箇中,然後查詢以獲取另一個列表。 –
好點,它應該是最乾淨的方式。非常感謝你! – Hardy