【问题标题】:How can I sort a meteor Post collection by time of insertion of last Comment如何按插入最后一条评论的时间对流星帖子集合进行排序
【发布时间】:2015-06-09 22:49:15
【问题描述】:

我正在使用 Meteor 进行我的第一个项目,但在排序时遇到了一些困难。

我有一个帖子集合和一个评论集合,在评论集合中我有一个 postId 和它所属的帖子的 ID(效果很好)

我现在尝试在 DOM 中显示所有帖子并在“最后更新时间/小时”下方显示,但我想显示该帖子中最后添加评论的时间

这是我迄今为止尝试过的(但我是 Meteor 的新手,所以可能还很遥远)

Template.postList.helpers({

    lastCommented: function() {
        var post = Posts.find(this._id);
        var lastComment = Comments.find({postId: post}, {sort: {createdAt: -1}});
         return lastComment.createdAt();

有什么帮助吗?

谢谢

【问题讨论】:

  • 到目前为止你尝试过什么?
  • 更新了我迄今为止尝试过的内容,但我可能还差得很远

标签: mongodb meteor


【解决方案1】:

您需要使用findOne 而不是find,或者使用fetch()[0]。此外,结果对象中的字段不是函数。好像你也已经有了post id,为什么还要再看一遍呢?

如果没有看到您的数据库架构或更多代码,很难说,但这可能是您需要的:

Template.postList.helpers({
    lastCommented: function() {
        var lastComment = Comments.findOne({postId: this._id}, 
                                           {sort: {createdAt: -1}});
        return lastComment.createdAt;
    }
});

【讨论】:

    【解决方案2】:

    没有正确理解问题,也许您应该发布代码。虽然要按时间排序,但您可以使用带有 date_created: -1 的集合名称。

    这将根据您的要求按降序排序

    Post.find({}, {sort: {date_created: -1}});

    这可能有效

    【讨论】:

    • 我正在尝试获取帖子中最后一条评论的创建日期
    • 我已经用我到目前为止所拥有的代码更新了我的代码,如果它更清楚,也许你可以从那里提供帮助?
    【解决方案3】:

    为简单起见,将名为 lastCommentedOn 的字段添加到您的 Post 架构中。

    每次添加评论,更新lastCommentedOn的时间戳,现在获取最新cmets的帖子就像Post.find({}, { sort: { lastCommentedOn: -1 } })一样简单

    您可以查看https://github.com/matb33/meteor-collection-hooks 以在每次添加评论时自动更新lastCommentedOn

    【讨论】:

    • 没有想过这种方式,它也可以工作,最终以克里斯蒂安弗里茨的身份进行,并且成功了
    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多