2012-04-28 112 views
1

我正在創建一個應用程序,用戶可以在其中發佈帖子,其他用戶可以對這些帖子進行評論。爲了實現這個功能,我使用了喜歡POSTS,LIKES,COMMENTS這樣的表格(我使用parse.com數據庫來存儲這些信息表)。如何獲得最熱門的帖子?

崗位有像帖子ID,內容,userWhoMadeThePost領域,dateOfPosting

喜歡含有filelds爲ID,postOnWhichLikeWasMade(外鍵帖子(帖子ID)),userWhoLiked,dateofLike

評論有ID,內容,postOnWhichCommentWasMade (外鍵到POSTS(postId)),userWhoCommented,dateOfComment

我想檢索最熱門的帖子(最喜歡和評論的帖子)。

  1. 這樣做第一種方法是計數無後的和每個崗位,每當一個請求是熱門職位製成,但本可以成爲非常耗時,如果 有數以百萬計的帖子的每一次喜歡。
  2. 其他方式做到這一點是在POSTS表中包含'noOfLikes'和'noOfComments',所以爲了獲得熱門的帖子,我只能訪問帖子表,但這種方法的問題是每當用戶對一篇文章發表評論,然後我將不得不在POSTS表中增加'noOfComments',並在COMMENTS表中創建一個條目,當增量成功發佈到POST表時並且在更改COMMENTS表連接之前,問題就會開始。在這種情況下,POST和COMMENTS表將顯示錯誤的數據。

如何做到這一點?

回答

2

這將是簡單的,如果你有對數據庫的控制,但Parse這樣做意味着你有(其中您已經提到一個)兩個主要問題:

  1. 至於我可以告訴,Parse不允許在查詢中分組。這意味着(與您的模式)實際上不可能得到最喜歡/評論的職位,而不檢索所有人。這是因爲您實際上無法像使用標準SQL查詢(使用JOIN和GROUP BY)那樣實際添加具有喜歡/評論數量的新列。
  2. 您無法在一個事務中更新多個對象,因此用戶可能會添加評論,但發佈對象中的評論數量不會更改。

這樣說我認爲(至少如果你堅持使用解析),你必須添加'noOfLikes'和'noOfComments'列到Post對象。它不僅爲檢索N個頂級帖子提供了唯一可行的解​​決方案(沒有獲得全部頂級帖子),但我認爲實際的不一致風險很低。您可以始終捕獲網絡(或其他)異常,並在本地臨時存儲更新請求並在稍後重試。

相關問題