Meteor Subscribe不会更新集合的排序顺序

eri*_*sch 18 mongodb node.js meteor

// Snippet from Template
<div class="post-container">
  {{#each elements}}
    {{> post-element this}}
  {{/each}}
</div>

// Snippet from Client 
Meteor.subscribe('thePosts');

// Snippet from Server
Meteor.publish('thePosts', function(){
  return Posts.find({},  {sort:{createdAt:-1}, reactive:true});
});
Run Code Online (Sandbox Code Playgroud)

当我做...

Posts.insert({body:postBody, createdAt: new Date()});
Run Code Online (Sandbox Code Playgroud)

post文档被添加并显示在我的列表的末尾,而不是我的发布函数中指定的降序.关于我做错了什么的任何想法?

谢谢!

Dav*_*don 47

发布功能确定哪些记录应同步到任何订阅客户端的迷你mongo数据库.因此,对发布函数中的数据进行排序实际上对客户端没有影响,因为客户端数据库可能会以其他方式存储它们.

当然,您可能希望在发布者find中使用排序,以便将记录的数量限制为最近的N个 - 但这又是一种决定哪些记录同步而不是如何存储/使用它们的方式.客户.

将记录同步到客户端后,由模板代码决定如何显示结果.例如:

Template.myTemplate.elements = function() {
  return Posts.find({}, {sort: {createdAt:-1}});
}
Run Code Online (Sandbox Code Playgroud)

另请参阅我的帖子中关于常见错误的"已排序发布"部分.