9

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

这两个

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

或者

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

导致meteor cannot observe queries with skip or limit

4

1 回答 1

16

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

不幸的是,这是真的:mimimongo 包目前不支持调用observe使用skiporlimit选项的游标。这没有充分的理由;它只是没有实施。

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

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查询结果的依赖,因此只要查询中的任何对象发生更改,就会重新计算整个模板。

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

于 2012-04-14T22:07:04.073 回答