我正在使用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();
有关如何做到这一点的任何帮助?
感谢
答案 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
更新。