当前位置: 首页 > 面试题库 >

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

齐航
2023-03-14
问题内容
// 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()});

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

谢谢!


问题答案:

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

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

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

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

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



 类似资料:
  • 当使用 发布/订阅 API 时,需要决定使用同一连接的消息应该是顺序处理 还是并行处理 。 顺序处理意味着你(很大程度上)不需要担心线程安全问题,并且这意味着你保持了事件的顺序。它们会完全按照(通过队列)接受的顺序来处理,但是结果这也意味着消息会延迟彼此。 另一种选择是 concurrent(并行) 处理。这使得工作的处理顺序 没有特定的保证 并且你的代码完全负责确保并发的消息不应该破坏内部的状态

  • $Eclipse不喜欢后面的add语句,也就是说:ArrayList(SortNames.CelebrityNamesFile)类型中的方法add(SortNames.CelebrityNamesFile)不适用于参数(String) $,然后它不喜欢我的sort语句,也就是说:Bound mismatch:类型集合的泛型方法sort(List T)不适用于参数(ArrayList(sortnam

  • 问题内容: 当我转换到元素的顺序发生变化,由字符排序。 考虑以下示例: 我的问题是 为什么会这样呢? 如何进行设置操作(尤其是“设置差异”)而不丢失初始顺序? 问题答案: 是无序的数据结构。 不要使用,而是: 请注意,的顺序b无关紧要,因此它可以是可迭代的,但是应该是支持O(1)成员资格测试的可迭代。 编辑:上面的答案假定你希望能够对所有出现的集合执行(有序)设置操作,尤其是对先前设置操作的结果也

  • 问题内容: 我有一个Java集合: 现在在显示列表之前有一个字段,我想按此排序此集合。 有什么办法可以做到吗? 问题答案: 使用比较器: 此外,如果实现,则只需使用 使用JDK 8,语法要简单得多。 更简单 最简单的 显然,初始代码也可以用于JDK 8。

  • 问题内容: 我找不到使用此方法的任何示例,所有示例都给出了第二个参数“ null”。我听说此方法用于根据多个标准对类进行排序,但找不到示例。 对于本课程,如果我想根据学生的姓名和年龄对学生列表进行排序,如何使用方法Collections sort(List,Comparator) 问题答案: 在你现有的学生班级的基础上,这通常是我的工作方式,尤其是当我需要多个比较器时。 用法: 编辑 自Java

  • 主要内容:1 集合元素的排序,2 Collections sort方法,3 字符串正序排序,4 字符串倒序排序,5 包装类型排序,6 自定义对象排序1 集合元素的排序 我们可以对以下元素进行排序: 字符串对象 包装类对象 用户自定义对象 Collections类提供用于对集合的元素进行排序的静态方法。如果集合元素为Set类型,则可以使用TreeSet。但是,我们无法对List的元素进行排序。Collections类提供用于对List类型元素的元素进行排序的方法。 2 Collections so