【问题标题】:Finding most recent entry in a meteor collection在流星集合中查找最新条目
【发布时间】:2014-07-21 18:11:19
【问题描述】:

我的任务听起来很简单,但我无法确定如何编写...我只想找到插入集合中的最新项目并将其显示在我的流星应用程序上。

我一直在玩 Collection.find() 没有真正的结果。这是我尝试过的最后一行:(请记住,这些名称是占位符。我的集合在我的代码中不称为 Collection)

Template.tempname.tempitem = function () {
    return Collection.find({}, {sort: {DateTime: -1, limit: 1,}});
};

我在集合中有一个字段,它是

的结果

Date.parse(Date())

这应该允许我按最近的排序。可能还有其他方法可以做到这一点,但这是我想出的第一个解决方案。

【问题讨论】:

    标签: meteor


    【解决方案1】:

    根据docs,您也可以这样做:

    return Collection.findOne({}, {sort: {DateTime: -1, limit: 1}});
    

    前提是DateTime是你做的这个字段Date.parse(Date())。此外,您不必将日期存储为 unix 时间戳,只需执行 new Date() 即可,它将存储为 Date 对象类型。

    【讨论】:

    • 啊我现在明白了。这很好用。我可能会改变我存储日期的方式,因为这似乎是最有意义的。我不确定在正常日期下如何进行排序。
    • 为什么在使用 findOne 时限制:1?
    • @elhoucine 在发布这篇文章时,需要在sort 旁边传递limit 的参数。使用findOne 是find().fetch()[0] 的别名(这不是find 的limit 为1,并且当时不是在查询中没有使用limit。我不确定这是否今天不一样了,可能还是一样。
    • 在 Meteor 1.2.1 中,我可以在客户端上无“限制”地拨打电话,仅供参考
    • 性能怎么样?有没有更有效的解决方案,还是我们能做到的最好的解决方案?
    【解决方案2】:

    我只能通过做得到想要的结果

    let commentsTmp: Comment = Comments.findOne({ parentId: this.currentPost._id }, { sort: { time: -1 } });
    

    MongoObservable.Collection<T>

    希望这会对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      相关资源
      最近更新 更多