Meteor 如何在更改路由时清除本地客户端minimongo数据?
我正在两个单独的页面上实现无限滚动(通过设置出版物的会话限制)——我们称之为第一页和第二页。每个页面都有自己的订阅,都是从同一个集合发布的,但包含不同的数据子集。假设第一页按以下顺序接收这些文件:Meteor 如何在更改路由时清除本地客户端minimongo数据?,meteor,Meteor,我正在两个单独的页面上实现无限滚动(通过设置出版物的会话限制)——我们称之为第一页和第二页。每个页面都有自己的订阅,都是从同一个集合发布的,但包含不同的数据子集。假设第一页按以下顺序接收这些文件: A, B, C, D, E, F.... 第二页收到: E, B, G, H, K... 一些项目将出现在两个页面上,在本例中,这些项目将是E、B、G。现在的问题是,一旦我访问了第二页并返回到第一页,第一页上项目的顺序现在更改为: E, B, G, A, C, D... 正如您所看到的,所有公共
A, B, C, D, E, F....
第二页收到:
E, B, G, H, K...
一些项目将出现在两个页面上,在本例中,这些项目将是E、B、G
。现在的问题是,一旦我访问了第二页并返回到第一页,第一页上项目的顺序现在更改为:
E, B, G, A, C, D...
正如您所看到的,所有公共项(E、B、G)现在将按照如上所示的顺序首先显示在列表上,即使发布中的数据之前已经从服务器中进行了排序。我尝试通过使用.find({},{sort:{createdAt:-1}},{limit:limit})
从helpers中的客户端对其进行再次排序来修复它,这似乎解决了问题,但出于某种原因,它也破坏了所有无限滚动
我试图理解是什么导致了这种情况,我怀疑这是因为公共文档是从它之前的页面缓存在客户端本地minimongo中的。我还尝试通过为订阅分配句柄来停止订阅,然后在订阅上使用.stop()
,但没有清除数据
我是新来的流星。有人能告诉我一种方法,在更改路由时有效地清除所有本地客户端数据吗?您能添加您的发布和订阅代码吗。如果没有代码,真的很难弄清楚发生了什么……在翻阅了之前的文章之后,我发现其他人也有同样的问题,这只是一个语法问题。我上面代码中的“limit”参数应该这样定位:
.find({},{sort:{createdAt:-1},limit:limit})
。我解决了这个问题,现在一切都正常了。我还了解到,发布时是否已经在服务器上对数据进行了排序并不重要,但在订阅该数据时,仍然需要在客户端对其进行再次排序。