我建立一個Twitter克隆,我已經打了一個牆排序。搜索一個集合在其他的值,流星(MongoDB中)
這裏是我的收藏品:
Tweets:
createdAt: Date
body: String
userId: String
Events:
createdAt: Date
type: String (either 'retweet' or 'like')
tweetId: String
userId: String
當用戶點擊「轉推」,它會創建一個新的文件Event
跟蹤鳴叫和用戶ID。
然後,當我查看用戶的個人資料頁,我做的所有由用戶,或者一個「轉推」事件與該用戶ID存在由鳴叫搜索。我在服務器上進行反應式連接,以便Tweets
集合具有所有必要的推文。
問題是排序:我被他們的createdAt
值排序的所有的鳴叫。如果我轉推是昨天創造了一條Twitter消息,它會在我的下面我自己的微博中的任何飼料在最後一天出現。
換句話說,我需要的方式通過,如果這樣的事情存在關聯的事件的createdAt
領域鳴叫或者通過自己的createdAt
場,或排序。
我不反對重組我的模型,如果有更好的方法來做到這一點。我曾考慮過在創建新的Tweet時,只要你「轉推」,但問題是每個Tweet都有一個likeCount
和一個retweetCount
。如果我在轉推時創建全新的Tweet,並且某人喜歡或轉發轉發,則所有數字都會出錯(否則將會出現一個荒謬的非規範化更新數量)。
似乎是最簡單的方法是添加上鳴叫了'tweetedAt'日期字段。否則,排序將非常緩慢,因爲您需要映射您的推文並使用'Event.createdAt'日期來擴充它們。 –
感謝Michel的快速回復!雖然不完全確定你的意思,推文推文中已經有'createdAt'日期字段。問題在於,推特可能會重新推送1000次,每次推送的日期都與特定用戶有關。 –
對不起,我誤解了。即使是原創的,你是否總是有一個「事件」?在這種情況下,您可以通過「createdAt」日期排列事件,並查找每個事件的推文內容。 –