【问题标题】:Meteor reactive publish based on client session variable基于客户端会话变量的 Meteor 反应式发布
【发布时间】:2014-10-24 03:23:17
【问题描述】:

我正在制作一个流星 js Web 应用程序,它向客户端呈现一个与会话变量绑定的 html 范围滑块。

我希望服务器只发布值小于滑块当前值的数据,数据从最新到最旧排序。我有很多数据库条目(2000+)。如果我在滑块的最大值内发布所有内容,我的浏览器就会太慢。如果我将发布限制为 100 个左右,当我拉下滑块时,我会错过很多值较小的数据(这些数据恰好更旧)。

尝试可扩展性(不向客户端发送太多数据)的最佳做法是什么?反应式发布功能是关键吗(使用 onchange 和滑块值作为关键)?这听起来像很多服务器往返。救命!

【问题讨论】:

  • 关于您关于基于客户端会话变量的反应式订阅的问题:这绝对是可能的。这是您的特定情况的示例: Deps.autorun(function () { Meteor.subscribe("yourCL", selectorArgs, Number(Session.get('yourSessVar'))); });流星文档似乎显示了一种名为“Tracker.autorun”的新方法;但是我没有使用它。它声称跳过了浪费的退订/重新订阅
  • 我了解其中的订阅部分。每次会话变量更改时,我的发布功能似乎都会重新运行(我通过服务器记录变量)。当我想要...时,我的发布只是不发送数据库的新子集......
  • 没有代码,很难猜测。阅读how publish/subscribe works 会有帮助吗?

标签: javascript meteor


【解决方案1】:

从用户体验的角度来看,分页是否可以接受?如果是这样,有些软件包可能会有所帮助,例如 alethes:pages

否则,Adam 建议使用 Tracker.autorun 是正确的(Tracker 已替换 Deps)。

与任何其他发布一样,请确保您的发布功能only returns the fields that you need on the client,以最大限度地减少传输的数据和内存消耗。

【讨论】:

  • 如果用户选择查看更多,我想向客户端发布更多条目。我宁愿不要一开始就用所有东西淹没客户。我不确定我是否一定需要页面来做到这一点。
猜你喜欢
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 2017-02-21
  • 1970-01-01
相关资源
最近更新 更多