我可能遗漏了一些非常明显的东西,或者遗漏了文档中的一些东西。我搜索并没有找到类似的问题。发布它。
这两个
return Items.find({},{sort: {time: -1}, limit: 10});
或
return Items.find({},{sort: {time: -1}).limit(10);
导致 meteor 无法观察带有 skip 或 limit 的查询
最佳答案
更新:这是一个较长的问题。从 Meteor 0.5.3 开始,您可以使用 skip
和 limit
选项观察查询。
不幸的是,这是真的:mimimongo 包当前不支持在使用了skip
或limit
选项的游标上调用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/