一尘不染

流星订阅不会更新集合的排序顺序

node.js

// 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});
});

当我做…

Posts.insert({body:postBody, createdAt: new Date()});

邮政文档被添加并显示在列表的末尾,与我的发布功能中指定的降序相反。关于我在做什么错的任何想法吗?

谢谢!


阅读 179

收藏
2020-07-07

共1个答案

一尘不染

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

当然,您可能希望在发布者的目录find中使用sort,以将记录数限制为最近的N条-
但这只是决定同步哪些记录的一种方法,而不是决定记录的存储/使用方式。客户。

记录同步到客户端后,由模板代码确定结果的显示方式。例如:

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

另请参阅我的帖子中有关常见错误的“排序发布”部分。

2020-07-07