这是我publish.js
文件中发布我的收藏:排序,并限制不工作蒙戈+流星
const tags = Tags.find({title: {
$regex: `.*${searchString}.*`,
$options: 'i'
}}, {
sort: { counts: -1 }, limit: 3
});
console.log(tags.count());
return tags;
这是我的部件,其订阅了这个集合:
this.tagsSubscription = this.subscribe('tags',() => [this.tag], function (err) {
that.tags = Tags.find().fetch();
});
因此,我得到2个不同的错误:
排序和限制不起作用:我有时g等3个以上的结果,并没有按'计数'排序
回调无法正常工作。它太快了,我在客户端和服务器上得到了不同的结果。我试过这种方式,
onSuccess()
和Meteor.autorun()
,但没有运气。如果我使用一个setTimeout
我可以看到正确的游标
标题搜索是似乎工作的唯一的东西。
1-有趣,谢谢澄清。我在服务器上看到了正确的输出,但是如果我发送一个空字符串,客户端显示4个结果(服务器只有3个)。也许与回调问题有关? 2-是的,正如上面评论的那样。我发送“this.tag”这是一个字符串(服务器上的searchString)。我试过你的反正,但我得到这个错误:“错误:参数2必须是一个函数”(但不要担心这个) 3-哇,我从角流星文档复制这个信息:S现在排序在客户端但不起作用。这并不是什么大不了的,因为我可以用AngularJS对其进行排序 –
我不是很明白这一点:“这是一个非常重要的原因,您应该始终获取您订阅的相同数据(不要”取”)。”什么意思与“相同的数据”。是不是总是一样的? 当然,我在客户端的光标大小上遇到的问题与此有关。我会给它一个解决方法 –
我怀疑当你重新订阅不同的参数时,你的客户端集合没有被清除,所以你可以添加过滤到客户端以及排序/限制。这样它应该没有问题。 – Styx