如何在插入最后一条评论时对流星邮政集合进行排序

时间:2015-06-09 03:50:01

标签: mongodb meteor

我正在使用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();

有关如何做到这一点的任何帮助?

感谢

3 个答案:

答案 0 :(得分:1)

您需要使用findOne代替find,或使用fetch()[0]。此外,结果对象中的字段不是函数。您似乎已经拥有了帖子ID,为什么要再查一次呢?

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

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

答案 1 :(得分:0)

没有正确理解这个问题,也许你应该发布代码。虽然随着时间的推移排序,你可以使用date_created的集合名称:-1。

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

  

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

这可能有效

答案 2 :(得分:0)

为了简单起见,请在您的lastCommentedOn架构中添加名为Post的字段。

每次添加评论时,都要更新lastCommentedOn的时间戳,现在获取包含最新评论的帖子就像Post.find({}, { sort: { lastCommentedOn: -1 } })

一样简单

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