javascript - meteor 无法观察带有 skip 或 limit 的查询

标签 javascript mongodb meteor

我可能遗漏了一些非常明显的东西,或者遗漏了文档中的一些东西。我搜索并没有找到类似的问题。发布它。

这两个

return Items.find({},{sort: {time: -1}, limit: 10});

return Items.find({},{sort: {time: -1}).limit(10);

导致 meteor 无法观察带有 skip 或 limit 的查询

最佳答案

更新:这是一个较长的问题。从 Meteor 0.5.3 开始,您可以使用 skiplimit 选项观察查询。

不幸的是,这是真的:mimimongo 包当前不支持在使​​用了skiplimit 选项的游标上调用observe。没有充分的理由这样做。它只是没有实现。

如果您在模板助手中调用此查询,有一个简单的解决方法:

Template.name.items = function () {
  // fetch array of all the items
  var items = Items.find({}, {sort: {time: -1}}).fetch();

  // return only the first 10 items to the template
  return items.slice(0,10);
};

解决方法的缺点是效率。如果你的助手返回一个游标(只是返回 Items.find 的值而不调用 fetch),那么模板系统足够聪明,不会在只有一个项目时重新计算整个模板更改,或者是否插入了新项目。

另一方面,在帮助程序中调用 fetch 会注册对整个 查询结果的依赖,因此只要查询中的任何对象发生变化,整个模板就会重新计算.

没有其他区别。模板会将相同的内容放在屏幕上,并且在必须重绘自身时会保留表单元素的内容。

关于javascript - meteor 无法观察带有 skip 或 limit 的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10157454/

相关文章:

javascript - PHP 脚本未收到发布的 JSON

javascript - 如何使用 jquery 在加载时间添加属性

MongoDB聚合查询以计算用户和支付模型分离时的ARPU

c# - 如何使用 ISO 8601 格式的 DateTime 字段将 JSON 文本反序列化为 BsonDocument?

meteor - 发布用户所在组的项目(规划角色和发布)

cordova - Meteor/Cordova 的本地通知

javascript - 只读 TextArea 上的滚动条

javascript - 如何使用 jQuery .find() 从嵌入对象中检索值

mongodb - 服务 'MongoDB Server' (MongoDB) 启动失败。请确认您有足够的权限启动系统服务

javascript - meteor 集合正确观察变化