首页 > 解决方案 > Meteor - 发布所有作者的最佳方法,仅发布他们的最后一篇文章

问题描述

这几天我一直在考虑这个问题,我想我的脑袋要爆炸了……我希望你能帮助我解决这个问题。

我正在使用 Meteor 1.10 + Blaze

我有一个包含作者数据的集合,另一个包含这些作者发表的帖子的集合。每个作者都是许多帖子的创建者。

我想显示一个列表,其中显示每个作者的姓名和他们最后一篇文章的标题/日期,例如:

  1. 布莱恩·洛佩兹——“如何快乐”——20 年 3 月 25 日
  2. 雷·史密斯——“学习烹饪”——20 年 2 月 4 日

架构示例:

author_schema = {
        _id: 'JsQEJG3qsBrKE6hep',
        name: 'Bryan',
        surname: 'Lopez',
      }

post_schema = {
        _id: 'Ftxw9YKTaxnKtJztg',
        tittle: 'how to be happy',
        date: ISODate("2020-01-30T10:00:46.572Z"),
        authorId: 'JsQEJG3qsBrKE6hep'
      }

我很清楚我必须发布所有作者,但我想避免将所有帖子发布到客户端,因为它会减慢加载速度并且效率低下。

有什么办法可以避免发布所有帖子,并且只能发布每个作者的最后一篇帖子(日期最近的帖子)?

非常感谢你的帮助!流星法则!

标签: meteormeteor-blaze

解决方案


好的,这很简单。最有效的方法是在作者集合中保存 2 个额外字段,并在每次创建帖子时插入这些字段。

再次:当您将帖子保存到帖子集合时,将 lastPostName 和 lastPostDate 保存在作者集合中并用每个帖子覆盖。您还可以添加 lastPostId 以便您可以轻松地为该特定帖子构建一个 url。

示例(所有这些数据都存储在作者集合中):

<span>
   <a target="_blank" href="....your url/dynamic...postId">{Your dynamic post name}</a>
   <span>{Your dynamic post date}</span>
</span

如果你想做这样的搜索:今天或最近 7 天有最后一篇文章的作者,这将非常容易和高效。只是为了确保您的集合中有一个索引,用于查找要用于搜索的任何字段。


推荐阅读