我们有相当多的文档集,我们希望我们的用户能够查看和过滤。为了加快速度,我们只向客户发送有限数量的文件。但是,由于我们确实需要客户端能够过滤文档,因此我们需要一种方法来发送它们可以过滤的键和值。根据客户对过滤器的选择,我们为文档创建查询。例如,假设我们有两个这样的文件:
{标签:['foo'],用户:'Ken'} {标签:['bar','baz'],用户:'芭比'}
在这种情况下,客户端应该看到标签可以在 foo、bar 和 baz 上过滤,而用户可以在 Ken 和 Barbie 上过滤。由于过滤器只是文档中数据的聚合,我不想为过滤器创建一个集合并将其存储在数据库中。相反,我一直在玩弄使用
var Filters = new Meteor.Collection(null)
出版物内。我查询要为其创建过滤器的所有文档,然后将过滤器插入到 Filters 集合中。在过滤器集合上使用 .observe 我在添加过滤器时将它们发送到客户端。
这样做的结果是每个客户端都会在服务器上创建一个 Filters 集合。假设这些集合中的每一个都包含大约 50-400 个过滤器,例如 {tag: 'foo', count: 3}。对我来说,这听起来好像在不耗尽服务器内存的情况下应该没问题,但我不是计算机科学家。对此的任何意见将不胜感激。
如果您对如何在服务器上创建过滤器有任何其他想法,也会很有趣。
谢谢!