meteor无法通过跳过或限制来观察查询

Ste*_*non 9 javascript mongodb meteor

我可能在文档中遗漏了一些非常明显或遗漏的东西.我搜索过,没有找到类似的问题.张贴它.

这两个

return Items.find({},{sort: {time: -1}, limit: 10});
Run Code Online (Sandbox Code Playgroud)

要么

return Items.find({},{sort: {time: -1}).limit(10);
Run Code Online (Sandbox Code Playgroud)

造成 meteor cannot observe queries with skip or limit

deb*_*lis 16

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

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

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

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);
};
Run Code Online (Sandbox Code Playgroud)

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

另一方面,调用fetch帮助程序会记录对整个查询结果的依赖性,因此每当查询中的任何对象发生更改时,都会重新计算整个模板.

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

  • 何时可以实施跳过和限制的时间范围?这些对于实现高效的分页似乎至关重要.否则,必须在服务器中执行所有跳过/限制操作,并且实时更新本地缓存以仅反映应该显示的内容(而不是更多内容),而不是在客户端上预取和缓存结果. (3认同)
  • 我们希望minimongo能够实现完整的MongoDB API.补丁欢迎.http://docs.meteor.com/#collections有一个缺失项目列表. (2认同)
  • [link](http://docs.meteor.com/#data)上的文档显示了限制,可能需要更新?`Template.players.top_10_scorers = function(){return Users.find({},{sort:{score:-1},limit:10}); 我希望我能帮忙,但我是一个更环保的新手,只是学习这些东西 (2认同)
  • 现在已经在devel分支上修复了,并将在Meteor的下一个版本中修复. (2认同)