我正在建立一个Twitter克隆,我已经打了一个排序。
以下是我的收藏品:
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
值对所有推文进行排序。如果我转发昨天创建的推文,它会在我的推文下面显示我最后一天发布的任何推文。
换句话说,我需要一种方法,通过相关事件的createdAt
字段,通过自己的createdAt
字段,或对推文进行排序,如果这样的事情存在的话
如果有更好的方法,我不反对重组我的模型。我曾经考虑过每当你转发时都会创建一条新的推文,但问题是每条推文都有likeCount
和retweetCount
。如果我在转发时创建一个全新的推文,并且有人喜欢或推翻转发,那么所有数字都是错误的(或者需要进行荒谬的非规范化更新)。
答案 0 :(得分:0)
event
Events
键排序的Event.createdAt
集合,并限制为您要显示的事件数量。{{#each events}}
而不是{{each tweets}}
助手:
Template.myTemplate.helpers({
events: function(){
return Events.find({},{sort: {createdAt: -1}});
},
body: function(){
return Tweets.findOne({ _id: this.tweetId }).body;
}
});
这将是一种标准化的方法。为了提高效果,如果推文很短,您只需将每条推文中的body
字段复制到Events
文档中即可。