javascript - meteor ;发布后不立即对客户端进行排序

标签 javascript meteor

我正在尝试制作一个可以发布帖子的非常简单的应用程序。我希望帖子页面上的每个条目都按 { createdAt: -1 } 排序。当我第一次访问该页面时,这有效。但是,当我发布新帖子时,它会附加到页面底部。

the latest post is at the bottom

(注意最新的帖子在底部)。当我重新加载页面时,它似乎可以正常工作并正确排序,但在提交后,它立即进入底部。

我的服务端代码如下(/server/publications.js):

Meteor.publish('posts', function(limit) {
  limit = limit || Meteor.settings.public.pageLimit;
  check(limit, Number);
  var options = {
    sort: { createdAt: -1 },
    limit: limit
  };
  return Posts.find({}, options);
});

在我的客户端上,我有这个 (/client/subscriptions.js):

Meteor.subscribe('posts');

如何使帖子在提交后立即正确排序?

最佳答案

我认为解决方案相当明显:您应该在客户端而不是服务器端进行排序。我猜你有一个包含帖子查询的辅助函数?在那里添加排序。

基本解释:Meteor 尝试在插入/更新时将最少量的信息推送给客户端。我猜它并没有完全重新运行订阅服务器端,这正是您所期望的,但它只是发送最后添加的元素,该元素被附加到客户端集合。

(注意:为了 100% 正确,您需要在两侧进行排序,因为您也限制了结果集的大小,并且您只希望推送最新的。)

关于javascript - meteor ;发布后不立即对客户端进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28813567/

相关文章:

javascript - 使用 Google Maps API 将纬度和经度转换为街道地址

javascript - 如何在具有 Ajax 的单个表单中使用多个提交按钮

java - JavaScript 中的 toFixed() 与 Java 中的 DecimalFormat 之间的冲突

javascript - Bower:警告:EPERM。 Grunt 无法完成操作

javascript - 从 HTTP.get 访问变量

javascript - 我们如何从 Javascript File 对象知道文件的内容?

debugging - meteor 服务器端断点从未在cloud9中命中

javascript - 等待模板自己的事件为自己的助手更改 session

javascript - 为什么此代码似乎没有将记录添加到 Meteor.users.profile 对象?

javascript - Draft js 保存和渲染或显示内容