2016-08-30 12 views
0

我有一個供稿,其中包含當前由「updatedAt」訂購的帖子。我的初衷是將帖子推到最後回覆的feed頂部(我通過在用戶離開評論時在每篇帖子中遞增「replyCount」字段來完成此操作),但並不完全瞭解另一個字段,「likeCount」也會在用戶的「喜歡」一個帖子時更新。我仍然希望將那些最近「回覆」到帖子頂部的帖子推送到頂部,但不要以與推薦帖子相關的怪異用戶體驗行爲爲代價。我不確定如何區分這兩者。訂購一個ParseQuery的日期只有一個字段已更新

我應該在這裏做什麼?我可以添加另一個名爲「lastReplyCountTime」的列,然後根據該列進行排序嗎?也許將所有帖子的lastReplyCountTime設置爲保存到數據庫的當前時間,然後只在帖子收到回覆時更新該值?

 String groupId = ParseUser.getCurrentUser().getString("groupId"); 
     ParseQuery<ParseObject> query = new ParseQuery<>(ParseConstants.CLASS_POST); 
     query.whereContains(ParseConstants.KEY_GROUP_ID, groupId); 
     /*query.addDescendingOrder(ParseConstants.KEY_CREATED_AT);*/ 
     query.orderByDescending("updatedAt"); 
     query.findInBackground((posts, e) -> { 

      if (mSwipeRefreshLayout.isRefreshing()) { 
       mSwipeRefreshLayout.setRefreshing(false); 
      } 

      if (e == null) { 

       // We found messages! 
       mPosts = posts; 

       String[] usernames; 
       usernames = new String[mPosts.size()]; 
       int i = 0; 
       for(ParseObject post : mPosts) { 
        usernames[i] = yeet.getString(ParseConstants.KEY_SENDER_NAME); 
        i++; 
       } 

       FeedAdapter adapter = new FeedAdapter(
         getListView().getContext(), 
         mYeets); 
       setListAdapter(adapter); 

      } 
     }); 
    } 

回答

1

你有2種選擇:

  1. 就像你的建議,你可以創建另一個日期屬性讓我們把它sortedUpdatedAt,並與當前的日期更新每次要更新相關的值
  2. 如果您仍想使用updatedAt,您可以將(如對象)包裝在單獨的分析對象(類)中。這個類將作爲關係保存在父類中,然後每次用戶「喜歡」時,只能更新此類而不更新整個對象。這樣,您的父對象的updatedAt將不會被更改。

我認爲選項1很棒,因爲它不是那麼複雜,你可以很快做到。

+0

不錯的建議。我選擇了選項1,因爲我不介意updatedAt是否在父對象上發生了更改,但這只是我設計的一部分。回覆的帖子如預期的那樣碰到頂端。當我有空時,我會在這裏分享我的代碼。謝謝。看到選項2 – santafebound

+0

的實現會很有趣,但我不認爲你應該這樣做。我這樣做是因爲我需要關於對象的更多細節,而不僅僅是updatedAt屬性。 –

+0

好吧,這是有道理的。我只是在這種情況下做了我所需要的。 – santafebound

相關問題